如何使用Swift更改SpriteKit中特定名称的所有节点的颜色
我正在尝试更改SpriteKit中每个节点实例的颜色。当我尝试将其放在update方法中时,它只更改其中一个,而不是全部如何使用Swift更改SpriteKit中特定名称的所有节点的颜色,swift,sprite-kit,Swift,Sprite Kit,我正在尝试更改SpriteKit中每个节点实例的颜色。当我尝试将其放在update方法中时,它只更改其中一个,而不是全部 override func update(currentTime: CFTimeInterval) { if changeColor { self.enumerateChildNodesWithName("blocks", usingBlock: { node, stop in block?.color = UIColor.or
override func update(currentTime: CFTimeInterval) {
if changeColor {
self.enumerateChildNodesWithName("blocks", usingBlock: { node, stop in
block?.color = UIColor.orangeColor()
})
}
}
我认为应该更改节点的颜色,而不是某些块变量的颜色。您将检索具有该名称的所有节点。但是这些节点没有颜色属性。只有一些子类,例如SKSpriteNode具有颜色属性。因此,您必须添加一些附加逻辑来更改颜色。例如,您可以尝试将节点转换为SKSpriteNode,然后更改颜色: 正如@appzyorlife正确地提到的,代码可以简化/快速简化
self.enumerateChildNodesWithName("blocks") { node, stop in
if let sprite = node as? SKSpriteNode {
sprite.color = .orangeColor()
}
}
我认为应该更改节点的颜色,而不是某些块变量的颜色。您将检索具有该名称的所有节点。但是这些节点没有颜色属性。只有一些子类,例如SKSpriteNode具有颜色属性。因此,您必须添加一些附加逻辑来更改颜色。例如,您可以尝试将节点转换为SKSpriteNode,然后更改颜色: 正如@appzyorlife正确地提到的,代码可以简化/快速简化
self.enumerateChildNodesWithName("blocks") { node, stop in
if let sprite = node as? SKSpriteNode {
sprite.color = .orangeColor()
}
}
对我来说还是太快了!我只需要再花一分钟来完成我自己的回答:调整一些非常微小的改进。1在颜色指定中,可以省略UIColor部分sprite.color=.orangeColor。2您也可以使用尾随闭包语法从代码中删除更多的单词。@appzyorlife谢谢您的评论,我包括了它。对我来说还是太快了!我只需要再花一分钟来完成我自己的回答:调整一些非常微小的改进。1在颜色指定中,可以省略UIColor部分sprite.color=.orangeColor。2您也可以使用尾随闭包语法从代码中删除更多的单词。@appzyorlife谢谢您的评论,我包括了它。