我正在使用Swift和SpriteKit
我有一个班级:
class Button: SKShapeNode
{
}
我有一些按钮:
var button1 = Button()
var button2 = Button()
我已经使用" .name"那些节点:
button1.name = "button1"
button2.name = "button2"
通常情况下,我使用enumerateChildNodesWithName("button")
枚举节点,但是在这里,名称已经被占用,所以我怎么能枚举所有按钮(使用类Button)?
答案 0 :(得分:1)
您可以通过使用enumerateChildNodesWithName
作为节点名称调用//*
来枚举给定节点的所有子节点。这在Apple的文档here中列为示例。
然后在块中检查节点是否为Button
类型,并相应地执行您的操作。
这样的事情:
myNode.enumerateChildNodesWithName("//*") { node, ptr in
if node is Button {
// do something here
}
}
答案 1 :(得分:1)
您可以使用节点的children
属性:
var buttonNodes = node.children.filter { $0 is Button }
完整示例:
import UIKit
import SpriteKit
let node = SKNode()
class Button: SKNode {
}
let button1 = Button()
let button2 = Button()
let label = SKLabelNode()
node.addChild(button1)
node.addChild(button2)
node.addChild(label)
let buttons = node.children.filter { $0 is Button }
print(buttons.count) // buttons only has 2 elements, the button nodes!