Cocos2D-X节点在错误位置加载时具有RemoveAllChildren()
我只使用一个场景对象作为我的整个2d侧滚平台,它有两个层:一个用于控制器的HUD层,另一个用于游戏中的所有内容 当我控制我的角色走进一扇门(带有physicsBody的sprite,该physicsBody具有将我带到下一层的回调)时,下一层将通过以下指令加载:Cocos2D-X节点在错误位置加载时具有RemoveAllChildren(),cocos2d-x,Cocos2d X,我只使用一个场景对象作为我的整个2d侧滚平台,它有两个层:一个用于控制器的HUD层,另一个用于游戏中的所有内容 当我控制我的角色走进一扇门(带有physicsBody的sprite,该physicsBody具有将我带到下一层的回调)时,下一层将通过以下指令加载: 删除所有事件侦听器 停止两个层的所有动作(游戏层通常会跟随玩家进行后续动作,并且仅限于背景Spritode的大小) 从游戏层中删除所有子项 将游戏玩家位置设置为Vec2(0,0) 加载级别2(级别1的完整副本…将背景精灵加载到game
- 删除所有事件侦听器
- 停止两个层的所有动作(游戏层通常会跟随玩家进行后续动作,并且仅限于背景Spritode的大小)
- 从游戏层中删除所有子项
- 将游戏玩家位置设置为Vec2(0,0)
- 加载级别2(级别1的完整副本…将背景精灵加载到gameLayer、playerSprite、添加事件侦听器)
- 将事件侦听器添加回图层
另外,在进行了更多的测试之后,我逐渐意识到,有时一些平台正在正确的位置加载,但有时它们没有。不知道为什么。解决这个问题的方法可能是一次加载一个东西,其间有一个延迟。但我不想拖延时间,只想弄清楚这笔交易是什么。弄清楚了:无论出于什么原因,我都需要在那里增加一个延迟。我认为无论出于什么原因,通过调用removeAllChildren(),位置都会出错。这是我的怀疑,因为有些时候,下一个级别的部分会加载,但只有一些部分,有时也会加载 这是我添加的代码,一旦所有的孩子都被移除,我会在游戏机上运行一个动作,等等
runAction(Sequence::createWithTwoActions(DelayTime::create(0.1), CallFunc::create( [&] ( ) {
loadLevel2(this);
})));