【问题标题】:Kivy: Error on iOS using JSON file for High ScoreKivy:iOS 上使用 JSON 文件获取高分时出错
【发布时间】:2014-06-25 03:59:51
【问题描述】:

我尝试使用 JSON 文件和 Kivy 中的 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

【问题讨论】:

    标签: python ios json kivy


    【解决方案1】:

    我也被这个问题困住了。所以,最后,我能够解决这个问题。接下来的代码对我帮助很大。

    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 为每个应用程序和操作系统路径存储一个唯一的,当前应用程序的代码存储在其中。

    【讨论】:

    • 嗯,我一直在玩这个,但还没有弄清楚。我收到一个错误,提示未定义名称“加入”?
    • @FortuneFaded joinos.path 的一部分,因此您需要使用 from os.path import join 导入它
    • 谢谢。我做了一个测试应用程序来测试它,但仍然无法正确。你能看看吗? pastebin.com/g4myCh4n
    • @FortuneFaded,看看pastebin.com/AejGWLEN。我在 iPad 上对其进行了测试,它可以工作,我还在代码中添加了一些 cmets。
    • 完美运行!!!!谢谢!现在我只需要希望在我的游戏中做同样的事情。
    【解决方案2】:

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

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

    【讨论】:

    • 试过了,但仍然在 store_sync IOError 中收到错误文件“/usr/local/lib/python2.7/site-packages/kivy/storage/jsonstore.py”,第 39 行: [Errno 1] Operation not allowed: 'highscore.json' 2014-06-25 23:29:35.968 cookie[3234:60b] 应用程序异常退出! 2014-06-25 23:29:36.040 cookie[3234:60b] 离开
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2014-10-24
    • 2013-03-02
    相关资源
    最近更新 更多