2015-12-21 56 views
2

我將兩個SKSpriteNodes作爲子元素添加到另一個SKSpriteNode。代碼如下所示:SKSpriteNodeChild在錯誤的位置

let parentNode = SKSpriteNode(imageNamed: "ParentImage") 
parentNode.position = CGPointMake(0,0) 
parentNode.zPosition = 0 
let child1 = SKSpriteNode(imageNamed: "ChildImage1") 
child1.position = CGPointMake(0,0) 
parentNode.addChild(child1) 
child1.zPosition = -10 
let child2 = SKSpriteNode(imageNamed: "ChildImage2") 
child2.position = CGPointMake(0,0) 
parentNode.addChild(child2) 
child2.zPosition = 10 

當我parentNode添加到我的場景,在z平面精靈的順序,從後到前是

  • parentNode
  • child1
  • 的child2

有時,預期

  • child1
  • parentNode
  • 的child2

是否當一個孩子是parentNode低於z位置屬性獲得過統治?有沒有人遇到過這樣的錯誤或知道修復?

在GameViewController,skView.ignoresSiblingOrder = true 當我將它設置爲false,我得到的第一個行爲(parentNode,child1,的child2)每次。

+0

@ShaneOSeasnain我試着運行你的代碼幾次(模擬器和設備),我不能產生你在說什麼(我總是得到child1,parentNode,child2)。我在iOS 9.1和Xcode 7.1.1上 – Whirlwind

回答

0

問題已修復。我不能100%確定什麼解決了它,因爲我嘗試了幾件事情。我將ignoresSiblingOrder設置爲false,然後返回true,將出現在頂部的childNode的定義移動到與父級相同的函數中,最後(我懷疑這是修復的原因),移動了addChild並設置zPosition(在我的項目中,訂單原本是child1.zPosition,parentNode.addChild;更改這兩個的順序可能解決了問題,因爲我懷疑隨後的兄弟順序令zPosition混淆)。

0

我會建議添加一個充當容器的節點,然後將其他三個節點添加爲該節點的子節點。這樣,你的三個節點就像兄弟姐妹一樣,如果需要使用他們的zPosition,你可以重新排列它們。