如何在没有消隐的情况下加载cocos2d中的加载场景背景?

时间:2013-01-22 03:49:42

标签: cocos2d-iphone sprite-sheet

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

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

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

  1. 在iphone(3gs)模拟器上,我按预期看到加载场景。
  2. 在iphone视网膜模拟器上,我没有看到加载场景(目前还没有很多资产,所以可能会很快发生)并直接进入主菜单场景。
  3. 在ipad 3设备上,启动画面出现,然后有半秒黑屏,然后显示主菜单场景。
  4. 我想看看我能做些什么来避免在iPad 3上出现黑屏。我怀疑这是因为加载加载背景所花费的时间。

    我尝试了以下优化(主要基于@ Steffen的blog post on memory optimization):

    1. 将加载背景(最初为2.3 MB RGB8 png文件)单独移动到pvr.ccz spritesheet中,将其大小减小到1.8 MB。
    2. 使用后不久即从纹理中删除图像。
    3. 我仍然在iPad 3上看到黑屏。有什么建议吗?

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

      由于

2 个答案:

答案 0 :(得分:1)

忽略模拟器中发生的任何事情。这是不相关的,专注于设备。

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

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

答案 1 :(得分:1)

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

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

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

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

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