0

我有一个cocos2d游戏,它有一个加载场景,我们加载了一堆资产。游戏以启动画面开始,然后启动加载场景。加载场景从加载背景开始,因此用户在加载资产时会看到加载场景背景。

CCSprite::spriteWithFile:我通过调用并传递文件路径来加载加载场景背景:loadingbackground.pvr.ccz

它似乎在不同设备上的工作方式不同:

  1. 在 iphone (3gs) 模拟器上,我看到了预期的加载场景。
  2. 在 iphone 视网膜模拟器上,我看不到加载场景(还没有很多资产,所以可能很快就会发生),它直接进入主菜单场景。
  3. 在ipad 3设备上,闪屏出现,然后黑屏半秒,然后出现主菜单场景。

我想看看我能做些什么来避免 iPad 3 上出现黑屏。我怀疑这是因为加载加载背景所花费的时间。

我尝试了以下优化(主要基于@Steffen关于内存优化的博客文章):

  1. 将加载背景(最初为 2.3 MB RGB8 png 文件)单独移动到 pvr.ccz spritesheet 中,将其大小减小到 1.8 MB。
  2. 使用后不久从纹理中删除了图像。

我仍然在 iPad 3 上看到黑屏。有什么建议吗?

更新:发现问题 - 我有一些代码在其中覆盖OnEnter并调用[[CCDirector sharedDirector]replaceScene]它,并且还从后台线程调用相同的代码。删除了 OnEnter 重载,它工作时没有闪烁。

谢谢

4

2 回答 2

1

忽略模拟器中发生的任何事情。这无关紧要,专注于设备。

当加载场景初始化并添加加载场景的背景时,请确保您安排更新并在更新方法中加载资产。否则,如果您在 init 中加载资产,则不会绘制背景,因为您在 cocos2d 重绘屏幕之前加载了所有资产。

如果这仍然失败,只需将访问消息发送到背景精灵,然后是 [[CCDirector sharedDirector] drawScene]。这会强制重绘场景。

于 2013-01-22T09:14:39.917 回答
1

这是 cocos2d-iphone 还是 cocos2d-x ?确保标签正确:)

我认为您指的是启动闪烁,有几种方法可以避免这种情况。首先,您需要确保正确处理 iOS 6 和 iOS 5 及更低版本的 rootViewController,每个版本都有一些小的变化。

你可以在这里找到一点参考:http: //www.cocos2d-iphone.org/forum/topic/34471

第二件事你需要知道模拟器的行为是不稳定的,你应该总是依赖真实的设备进行测试,但很可能你仍然会遇到闪烁问题。

抱歉,我没有提供示例代码,但您没有提供足够的信息来了解这里的真正问题。

于 2013-01-25T10:38:24.043 回答