0

我的游戏场景是使用 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),替换关卡的移动非常平滑,即使是在速度上也是如此。

我正在使用批处理节点并将精灵图像存储在帧缓存中。我已经尝试在关卡选择场景中设置帧缓存和预加载声音,但这没有任何区别。我曾尝试清除关卡之间的缓存以查看是否可以使重新启动的关卡表现出相同的行为,但这并没有做任何事情。

谁能建议可能导致这种情况的原因以及我如何能够消除它。

谢谢!

4

1 回答 1

0

可能的解决方案:

在 init/onEnter 中加载所有纹理和精灵表。如果无法一次加载所有内容,请使用线程加载。对于音频/音乐,您可以在声音引擎中使用 preLoad 调用。

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

于 2012-09-23T19:31:17.560 回答