2016-03-15 44 views
1

我想按名稱查找一些節點,然後在該節點上調用一個名爲update的函數。EnumerateChildNodesWithName訪問方法

有以下代碼:

encounter.enumerateChildNodesWithName(enemy) 
{    
    node, stop in 
    node.update()    
} 

我不能調用該方法更新()我的敵人類看起來像這樣

class EnemyPrototype: SKSpriteNode, EnemySprite 
{ 
    func update(){} 
} 

爲什麼它不工作?

我猜這個節點是引用SKSpriteNode類而不是EnemyPrototype類。

或者我只是不正確地使用EnumerateChildNodesWithName?

謝謝。

回答

0

那是因爲節點是SKNode。你必須垂頭喪氣它EnemyPrototype這樣的:

encounter.enumerateChildNodesWithName("enemy"){ node , stop in 

    if let enemy = node as? EnemyPrototype { 

     enemy.update() 
    }   
} 

我認爲低垂可能失敗(例如,如果您已經添加不同類型的其他節點遇到節點),所以我使用條件低垂as?運營商,而不是as!版本(強迫downcast)這個運營商。

+0

現貨,表示很好,謝謝:) – garyconstable