2016-02-04 22 views
1

我只使用一個場景對象爲我的整個2d sidescrolling平臺遊戲與兩層:控制器的hudLayer和gameLayer的一切在遊戲中。Cocos2D-X節點在錯誤的位置加載有RemoveAllChildren()

當我控制我的性格走進一個門(小妖精,有一個回調帶我到一個新的水平physicsBody),通過這些指令的一個新的水平荷載:

  • 刪除所有事件監聽器
  • 停止一切行動兩個層(gameLayer通常已經在做後面的玩家後續行動,並僅限於backgroundSpriteNode的大小)
  • 從gameLayer
  • 集gameLayer位置移除所有的孩子VEC 2 (0,0)
  • 負荷水平2
  • 添加事件偵聽器回hudLayer
  • (的應該是什麼1級像...加載的背景精靈gameLayer,playerSprite,添加事件偵聽器的完整副本)

唯一的問題是,無論出於何種原因,該級別只會部分加載應該的方式...例如,硬幣出現在他們應該的位置,但平臺似乎不是。既不是那個玩家,也不是其他角色。不確定爲什麼這些對象沒有專門加載到正確的位置,但也許有人遇到過這種問題之前可以幫助?

大部分節點(例如平臺)出現在屏幕底部下方時,它們應該完全顯示在屏幕的底部。當他們出現在平臺之上時,角色也出現在那裏。

P.S.經過多次測試後,我意識到有時候某些平臺正在加載正確的位置,但有時卻並非如此。不知道爲什麼。解決這個問題的方法可能是一次加載一個,並在它們之間延遲一段時間。但我寧願不必拖延,只需弄清楚交易是什麼。

回答

1

發現:無論出於何種原因,我需要在那裏添加延遲。無論出於何種原因,我認爲通過調用removeAllChildren(),某些事情會與位置混淆。這是我的懷疑,因爲有些時候,下一級的部分會加載,但只有一些部分,有時只有部分。

這是我加入到運行一次在gameLayer動作所有的孩子被拆除的代碼,等等

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