我正在尝试更改SpriteKit中每个节点实例的颜色。当我尝试将它放在更新方法中时,它只会更改一个而不是全部。
override func update(currentTime: CFTimeInterval) {
if changeColor {
self.enumerateChildNodesWithName("blocks", usingBlock: { node, stop in
block?.color = UIColor.orangeColor()
})
}
}
答案 0 :(得分:4)
我认为您应该更改node
的颜色,而不是某些block
变量的颜色。您将检索具有该名称的所有SKNode
。但是那些节点没有颜色属性。只有一些子类,例如SKSpriteNode
具有color
属性。因此,您必须添加一些额外的逻辑来更改颜色。例如,您可以尝试将node
转换为SKSpriteNode
,然后才能更改color
:
self.enumerateChildNodesWithName("blocks", usingBlock: { node, stop in
if let sprite = node as? SKSpriteNode {
sprite.color = UIColor.orangeColor()
}
})
正如@appzYourLife正确提到的那样,代码可以简化/加速到
self.enumerateChildNodesWithName("blocks") { node, stop in
if let sprite = node as? SKSpriteNode {
sprite.color = .orangeColor()
}
}