枚举 Swift 中的 class 成员
Enumerate class members in Swift
我正在使用 Swift 和 SpriteKit
我有一个 class :
class Button: SKShapeNode
{
}
我有一些按钮:
var button1 = Button()
var button2 = Button()
而且我已经使用了那些节点的“.name”:
button1.name = "button1"
button2.name = "button2"
所以通常情况下,我用 enumerateChildNodesWithName("button")
枚举那些节点,但在这里,名称已经被占用,所以我如何枚举我的所有按钮(使用 class 按钮)?
您可以通过调用enumerateChildNodesWithName
并以//*
作为节点名称来枚举给定节点的所有子节点。这在 Apple 的文档 here.
中作为示例列出
然后在块中检查节点是否属于 Button
类型并相应地执行您的操作。
所以像这样:
myNode.enumerateChildNodesWithName("//*") { node, ptr in
if node is Button {
// do something here
}
}
可以使用节点的children
属性:
var buttonNodes = node.children.filter { [=12=] 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 { [=10=] is Button }
print(buttons.count) // buttons only has 2 elements, the button nodes!
我正在使用 Swift 和 SpriteKit
我有一个 class :
class Button: SKShapeNode
{
}
我有一些按钮:
var button1 = Button()
var button2 = Button()
而且我已经使用了那些节点的“.name”:
button1.name = "button1"
button2.name = "button2"
所以通常情况下,我用 enumerateChildNodesWithName("button")
枚举那些节点,但在这里,名称已经被占用,所以我如何枚举我的所有按钮(使用 class 按钮)?
您可以通过调用enumerateChildNodesWithName
并以//*
作为节点名称来枚举给定节点的所有子节点。这在 Apple 的文档 here.
然后在块中检查节点是否属于 Button
类型并相应地执行您的操作。
所以像这样:
myNode.enumerateChildNodesWithName("//*") { node, ptr in
if node is Button {
// do something here
}
}
可以使用节点的children
属性:
var buttonNodes = node.children.filter { [=12=] 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 { [=10=] is Button }
print(buttons.count) // buttons only has 2 elements, the button nodes!