运行时Cocos2d游戏层抖动,用相同场景替换场景后平滑



n我的游戏场景是使用replaceScene从级别选择场景中运行的,并传入级别号。游戏层从plist加载数据,然后在世界空间中创建对象(具有box2d实体的CCSprite子类)。当关卡播放时,英雄角色仍在屏幕中央——我调整图层位置,并根据移动速度放大和缩小图层比例。

例如:

CGPoint layerPosition = ccp(((screenSize.width / 2) - ourHero.position.x) * sceneScale, ((screenSize.height / 2) - ourHero.position.y) * sceneScale);
[self setPosition:layerPosition];
[self setScale:sceneScale];

问题是,当速度增加和图层缩小(而不仅仅是开始时的几秒钟)时,关卡第一次运行时的移动通常会很不稳定。但是,如果用户重新启动级别(按钮执行replaceScene),则替换级别的移动将非常平滑,即使速度很快。

我使用的是batchnode,并将精灵图像存储在帧缓存中。我试过在级别选择场景中设置帧缓存和预加载声音,但这没有任何区别。我曾尝试清除级别之间的缓存,看看是否可以使重新启动的级别显示出相同的行为,但这并没有起到任何作用。

有人能提出什么可能导致这种情况,以及我如何才能消除它吗?

谢谢!

可能的解决方案:

在init/onEnter中加载所有纹理和精灵表。如果不能同时加载所有内容,则使用线程加载。对于音频/音乐,您可以在声音引擎中使用预加载调用。

这是我的线。我也面临着同样的问题。最后通过使用单独的线程进行加载来解决。

最新更新