在Swift

时间:2016-08-07 04:32:04

标签: swift class sprite-kit member skshapenode

我正在使用Swift和SpriteKit

我有一个班级:

class Button: SKShapeNode
{
}

我有一些按钮:

var button1 = Button()
var button2 = Button()

我已经使用" .name"那些节点:

button1.name = "button1"
button2.name = "button2"

通常情况下,我使用enumerateChildNodesWithName("button")枚举节点,但是在这里,名称已经被占用,所以我怎么能枚举所有按钮(使用类Button)?

2 个答案:

答案 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!