运行时Cocos2d游戏层生涩,在用相同场景替换剧情后顺利播放

时间:2012-09-23 18:59:52

标签: cocos2d-iphone box2d ccsprite cclayer

n't我使用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并将精灵图像存储在帧缓存中。我已经尝试在关卡选择场景中设置帧缓存和预加载声音,但这没有任何区别。我有事件尝试清除级别之间的缓存,看看我是否可以使重新启动的级别表现出相同的行为,但是没有做任何事情。

任何人都可以提出可能导致此问题的建议,以及我如何能够消除它。

谢谢!

1 个答案:

答案 0 :(得分:0)

可行的解决方案:

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

Here s my thread。我也遇到了同样的问题。最后通过使用单独的线程进行加载来解决。