EnumerateChildNodesWithName访问方法

时间:2016-03-15 14:08:50

标签: sprite-kit swift2

我希望按名称找到一些节点,然后在该节点上调用名为update的函数。

有以下代码:

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

我无法调用方法update()我的敌人类看起来像这样

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

为什么不起作用?

我猜这个节点是引用SKSpriteNode类而不是EnemyPrototype类。

或者我只是错误地使用EnumerateChildNodesWithName?

感谢。

1 个答案:

答案 0 :(得分:0)

那是因为该节点是SKNode。你必须将它转发给EnemyPrototype,如下所示:

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

    if let enemy = node as? EnemyPrototype {

         enemy.update()
    }          
}

我认为向下转换可能会失败(例如,如果您在遇到节点时添加了不同类型的其他节点),那么我使用条件向下转换as?运算符而不是as!版本(强制向下转换)操作