2015-05-04 74 views
0

我想枚舉使用其名稱的節點,檢查它們的y位置,如果該值低於某個數字,則對其運行某些功能。我列舉的節點是其他節點的一部分,稱爲塊節點。我這樣設置我的遊戲,因爲在整個塊父節點而不是每個塊上應用動作更方便。這是我的代碼枚舉:Sprite工具包枚舉要刪除的節點失敗

func chechForPassing(){ 
    var passedBlocks: [SKSpriteNode] = [] 
    enumerateChildNodesWithName("1") { node, _ in 
     let node = node as! SKSpriteNode 
     if (node.position.y <= self.frame.size.height*0.3) { 
      passedBlocks.append(node) 
      println("1") 
     } 
     for node in passedBlocks { 
      self.fadeEnRemove(node) 
     } 

    } 

其中fadeEnRemove只是我寫的函數。打印用於調試目的。這是我如何設置我的塊:

func block(x: CGFloat, y: CGFloat) { 

    var block = SKSpriteNode(imageNamed: "obsticle") 
    kratkowski.size = CGSizeMake(block.frame.size.width*scaleFactor, block.frame.size.height*scaleFactor) 
    block.position = CGPointMake(x, y) 
    block.name = "1" 
    blocksNode!.addChild(block) 

} 

而塊節點是SKNode。任何人都知道如何解決這個小問題?

謝謝!

+0

這裏沒有足夠的信息來進行調試。 「fadeEnRemove」做什麼?此外,我不明白爲什麼你在枚舉中嵌套了一個循環與通過塊。它似乎應該在外面 – hamobi

+0

問題不是淡出功能,因爲我沒有打印在我的控制檯。我使用這個列表是因爲在同一次更新下有多個塊可能屬於這個類別。 – TruniTr

+0

fade函數只是一個函數,它將sprite作爲參數並運行remove操作(SKAction.removeFromParent) – TruniTr

回答

0

如果我正確執行,枚舉塊永遠不會被調用。這可能是因爲子節點名稱不是「1」,或者您沒有在正確的節點上調用enumerateChildNodesWithName。

現在您正在調用enumerateChildNodesWithName on self。這些節點是添加到自己還是添加到另一個節點?如果它們在另一個節點上,則改爲在該節點上調用enumerateChildNodesWithName。