【发布时间】:2010-12-15 05:02:35
【问题描述】:
我正在开发一个应用程序,我想在应用程序的主屏幕中使用 cocos2d,而不是在其他地方(在其他地方标准 UIKit 的东西更合适)。因此,我将 EAGLView 设置为 UINavigationController 中的根视图,当用户在正确的位置点击时,我将新的视图控制器推送到导航控制器上。
到目前为止,效果很好。主视图中的 cocos2d/chipmunk 东西运行良好,推送新的视图控制器按预期工作。
但是当我回到主视图时,那里什么都没有。我看到的只是窗口背景和导航栏。
我在根视图控制器的 -viewDidAppear: 中设置了一个断点,以查看弹出后发生了什么,到目前为止一切正常(或至少与推送前相同)。
推送只是沼泽标准的导航控制器推送。我没有看到任何类型的内存警告。有人对发生的事情有想法吗?
http://cl.ly/1Q050s0h2k47032K1Y1N 有一个简单的演示项目展示了这种行为
这是基于cocos2d+chipmunk项目模板的。点击 Grossini,一个新的视图控制器被压入堆栈。点击返回按钮,格罗斯尼就消失了。
为了有趣,这个问题只存在于 iOS 设备上(我运行的是 4.1),而不存在于模拟器中。
【问题讨论】:
-
我怀疑这是问题所在,但你泄露了这两个家伙:cl.ly/1J26180i383F3H0z3V2L
-
我什至不确定它们是什么,但它们看起来并不相关。
-
我发现如果我的 -viewDidLoad 在 EAGLview 上调用 -setNeedsLayout 的话,cocos2d 对象会被恢复,并且在导航控制器弹出到 root 后主视图是可见的。有一个明显的闪烁,虽然 - 有一会儿, cocos2d 对象不可见,但随后它们出现了。在cl.ly/1L423a1x27373t1q0s0y 上包含了我的演示的修改版本,这感觉像是进步,但令人讨厌的闪烁。
标签: iphone ios cocos2d-iphone