Cocos2D-X节点在错误位置加载时具有RemoveAllChildren()

Cocos2D-X节点在错误位置加载时具有RemoveAllChildren(),cocos2d-x,Cocos2d X,我只使用一个场景对象作为我的整个2d侧滚平台,它有两个层:一个用于控制器的HUD层,另一个用于游戏中的所有内容 当我控制我的角色走进一扇门(带有physicsBody的sprite,该physicsBody具有将我带到下一层的回调)时,下一层将通过以下指令加载: 删除所有事件侦听器 停止两个层的所有动作(游戏层通常会跟随玩家进行后续动作,并且仅限于背景Spritode的大小) 从游戏层中删除所有子项 将游戏玩家位置设置为Vec2(0,0) 加载级别2(级别1的完整副本…将背景精灵加载到game

我只使用一个场景对象作为我的整个2d侧滚平台,它有两个层:一个用于控制器的HUD层,另一个用于游戏中的所有内容

当我控制我的角色走进一扇门(带有physicsBody的sprite,该physicsBody具有将我带到下一层的回调)时,下一层将通过以下指令加载:

  • 删除所有事件侦听器
  • 停止两个层的所有动作(游戏层通常会跟随玩家进行后续动作,并且仅限于背景Spritode的大小)
  • 从游戏层中删除所有子项
  • 将游戏玩家位置设置为Vec2(0,0)
  • 加载级别2(级别1的完整副本…将背景精灵加载到gameLayer、playerSprite、添加事件侦听器)
  • 将事件侦听器添加回图层
唯一的问题是,无论出于何种原因,该级别仅部分加载它应该加载的方式。。。例如,硬币出现在它们应该出现的地方,但平台似乎没有。既不是那个,也不是玩家,也不是其他角色。不确定为什么这些对象没有加载到正确的位置,但也许以前遇到过此类问题的人可以提供帮助

大多数节点(如平台)显示在屏幕底部,而它们应该完全显示在屏幕底部。当角色应该出现在平台上方时,他们也出现在那里


另外,在进行了更多的测试之后,我逐渐意识到,有时一些平台正在正确的位置加载,但有时它们没有。不知道为什么。解决这个问题的方法可能是一次加载一个东西,其间有一个延迟。但我不想拖延时间,只想弄清楚这笔交易是什么。

弄清楚了:无论出于什么原因,我都需要在那里增加一个延迟。我认为无论出于什么原因,通过调用removeAllChildren(),位置都会出错。这是我的怀疑,因为有些时候,下一个级别的部分会加载,但只有一些部分,有时也会加载

这是我添加的代码,一旦所有的孩子都被移除,我会在游戏机上运行一个动作,等等

runAction(Sequence::createWithTwoActions(DelayTime::create(0.1), CallFunc::create( [&] ( ) {
            loadLevel2(this);
        })));