繁体   English   中英

Kivy:iOS使用JSON文件获得高分时出错

[英]Kivy: Error on iOS using JSON file for High Score

我试图通过在Kivy中使用JSON文件和json存储语言为应用设置高分跟踪器。

我导入了JSONstore,并且在我的主游戏类中做了

class Game(FloatLayout):
    highscorejson = JsonStore('highscore.json')
    highscore = NumericProperty(highscorejson.get('highscore')['best'])

在我上完课程后,我有一个结束游戏功能,该功能可以结束游戏并检查新分数是否超过了旧高分。

def end_game(self):
    if self.score > self.highscore:
         self.highscorejson.put('highscore', best = self.score)
    self.highscore = self.highscorejson.get('highscore')['best']

当我通过Kivy运行它时,它可以完美运行,但是当我使用iphone作为测试设备通过XCode运行它时,当您的得分超过最高分时,它就会崩溃并且游戏结束。 错误消息如下。

  File "/usr/local/lib/python2.7/site-packages/kivy/storage/__init__.py", line 174, in put
   File "/usr/local/lib/python2.7/site-packages/kivy/storage/jsonstore.py", line 39, in     store_sync
 IOError: [Errno 1] Operation not permitted: 'highscore.json'
2014-06-24 21:59:34.385 cookie[2320:60b] Application quit abnormally!
2014-06-24 21:59:34.457 cookie[2320:60b] Leaving

完整错误: http : //pastebin.com/Zy0DtysW

您可能正在尝试将文件保存在无效的位置。 尝试包括要写出的文件的完整路径-您可以使用kivy_home_dir来帮助解决此问题。

from kivy import kivy_home_dir
from os.path import join
highscore = JsonStore(join(kivy_home_dir, 'highscore.json'))

我也被困在这个问题上。 因此,最后,我能够解决此问题。 接下来的代码对我有很大帮助。

from os.path import join

class MyApp(App):
def build(self):
    data_dir = getattr(self, 'user_data_dir')
    store = JsonStore(join(data_dir, 'storage_file.json'))

据我了解, user_data_dir为每个应用程序和OS路径存储一个唯一的路径,其中存储了当前应用程序的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM