数组中的SKSpriteNode更改图像

时间:2017-10-17 08:29:12

标签: arrays swift3 sprite-kit skspritenode

我在didMove(查看:SKView)中使用

在SKSPriteNode数组中放了几个SKSpriteNode
enumerateChildNodes(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按钮中更改图像。

我该怎么做?

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

每次枚举集合(for node in array等)时,用于枚举的属性自动为let。整个系列本身也是不可改变的,因为更改集合同时枚举它可能会产生无法预料的后果。

将节点复制到新阵列,根据需要更改节点的属性,然后交换阵列。

您是否有理由不通过enumeratechildNodes(withName:更改节点的图片?