gpt4 book ai didi

ios - 是应用程序 :didFinishLaunchingWithOptions: really a good place to initialize cocos2d and its OpenGL ES view?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:01 27 4
gpt4 key购买 nike

Cocos2d 模板和通常的示例项目在 applicationDidFinishLaunching/application:didFinishLaunchingWithOptions: 方法中初始化 cocos openGL ES View 和其他内容。关于最后一种方法,Apple iOS Programming Guide指出:

"Apps that use OpenGL ES should not use this method to prepare their drawing environment. Instead, they should defer any OpenGL ES drawing calls to the applicationDidBecomeActive: method."

所以,我的问题是,application:didFinishLaunchingWithOptions: 真的是初始化 cocos2d 的合适位置吗?或者我们应该在 applicationDidBecomeActive: 中这样做吗?

如果您认为 applicationDidBecomeActive: 是可行的方法,那么与后台执行相关的后果是什么?即,当应用程序从非事件状态进入前台时,我们应该怎么做才能避免某种双重初始化?

提前致谢

最佳答案

问得好……到目前为止,99.9% 的 cocos2d 应用程序都按照 cocos2d 的方式进行操作,而且我还没有听说过一个问题。

由于 Apple 并未真正解释为什么这对 OpenGL ES 应用程序特别重要,因此我假设如下:

  • OpenGL ES 应用往往需要相对较长的时间来初始化其 View 。特别是在加载大量 Assets 时。如果花费的时间过长,这可能会导致应用程序被系统杀死。这意味着 Cocos2D 第一个场景应该加载得很快,特别是它不应该加载所有游戏的 Assets ,除非第一个场景的加载被推迟到 applicationDidBecomeActive。后者需要额外检查以确保没有其他场景正在运行。
  • 应用应该在 applicationDidBecomeActive 中执行常见任务。这通常是个好建议,因为某些设置现在可以在应用程序暂停时更改。例如,用户可能会更改设备语言,或进入飞行模式,应用程序需要在再次激活时做出响应。某些更改可能会特别影响 OpenGL ES 应用程序,例如,如果用户将区域设置从英语更改为日语,则会重新加载所有位图字体。

关于ios - 是应用程序 :didFinishLaunchingWithOptions: really a good place to initialize cocos2d and its OpenGL ES view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com