【发布时间】:2010-07-03 13:36:46
【问题描述】:
我一直在制作游戏,我使用的 python 库很糟糕(Pyglet)。我想尝试将 Cocoa 用于 OSX 版本。
我将能够弄清楚如何使用 NSWindow 和 NSOpenGLView 等类中的对象,然后将这些对象放入我自己的类中以进行游戏循环。
我不知道如何使用 PyObjC 加载我可以制作的动态 Objective-C 库,然后使用我将在 python 中制作的类来设置我认为可以由 NSTimer 循环的游戏。
但是,循环方法还需要从许多 python 类之一调用 python 方法。我的游戏包含许多用于游戏不同部分(Mapmaker、GameSession、AnacondaGame 等)的 python 类。游戏循环将需要根据当前部分调用任何这些类中的循环方法并传递偶数信息。
PyObjC 显然是“双向”的,那么它是如何完成的呢?
或者,我可以创建两个由 python 调用的方法,并在中间添加 python 代码,其中循环由 python 控制。
PyObjC 网站上的“文档”似乎只解释了如何在 python 中使用 Cocoa,没有其他内容。
我不能用界面构建器制作一个固定的 GUI,因为该库需要根据我的类的初始化方法的 python 输入来创建窗口。
了解 Objective-C 的语法并不是什么大问题,我可以参考 Cocoa 文档来制作我需要的对象。
感谢您的帮助。将不胜感激。我厌倦了使用 pygame 和 pyglet 等损坏的库,使用特定于平台的 OS API 似乎是确保质量的最佳方法。
【问题讨论】:
-
我不能使用 python 主循环吗?我必须在 NSApplication 上调用 run 方法,python 已准备好启动。然后我需要在我的 Objective-C 代码中调用一些 python 方法。幸运的是,我当前使用 pyglet 的代码使用了类似的东西,其中调用了 run 方法。这只是从 Objective-C 调用 python,这是令人讨厌的部分。
-
在没有界面生成器的情况下,肯定有 Cocoa 的好教程吗?
标签: python objective-c cocoa pyobjc