枚举 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!