我在didMove(查看:SKView)中使用
在SKSPriteNode数组中放了几个SKSpriteNodeenumerateChildNodes(withName: "//*") { (node, stop) in
if let spriteNode = node as? SKSpriteNode{
if let nodeName = node.name{
if nodeName.hasSuffix("Button"){
self.buttons.append(spriteNode)
}
}
}
}
现在使用我的NSCoding的结果我想改变我的按钮图像
for node in self.buttons{
if let name = node.name{
if name.hasSuffix("Button"){
let letter = name.replacingOccurrences(of: "Button", with: "", options: .regularExpression)
if let number = self.gameResult[letter]{
switch number{
case 1:
node = SKSpriteNode(imageNamed: "\(letter)Button-Bronze")
case 2:
node = SKSpriteNode(imageNamed: "\(letter)Button-Silver")
case 3:
node = SKSpriteNode(imageNamed: "\(letter)Button-Gold")
default:
node = SKSpriteNode(imageNamed: "\(letter)Button-Bronze")
}
}
}
}
}
看来数组中的所有节点都被释放,我无法在SKSpritNode按钮中更改图像。
我该怎么做?
你能帮我吗?
答案 0 :(得分:1)
每次枚举集合(for node in array
等)时,用于枚举的属性自动为let
。整个系列本身也是不可改变的,因为更改集合同时枚举它可能会产生无法预料的后果。
将节点复制到新阵列,根据需要更改节点的属性,然后交换阵列。
您是否有理由不通过enumeratechildNodes(withName:
更改节点的图片?