数组更改图像中的 SKSpriteNode
Posted
技术标签:
【中文标题】数组更改图像中的 SKSpriteNode【英文标题】:SKSpriteNode in array change image 【发布时间】:2017-10-17 08:29:12 【问题描述】:我在 didMove(to view: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】:任何时候你枚举一个集合(for node in array
等),用于枚举的属性自动是一个let
。整个集合本身也是不可变的,因为在枚举集合的同时更改集合可能会产生无法预料的后果。
将节点复制到一个新数组,根据需要更改节点的属性,然后交换数组。
你不能通过enumeratechildNodes(withName:
更改节点的图像有什么原因吗?
【讨论】:
谢谢。新数组似乎是我的问题的超级解决方案。关于 enumaratechildNodes 我试过但 spriteNode 作为? SKSpriteNode 也让。你将如何在枚举中做到这一点?谢谢大家的帮助 你可以把类似var myNode = spriteNode
的东西(假设spriteNode
是枚举变量)给自己一个可变的精灵节点。
太棒了!像魅力一样工作。极好的。非常感谢以上是关于数组更改图像中的 SKSpriteNode的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 SKTexture 的情况下更改 didBeginContact 中的 SKSpriteNode 大小和颜色?
Swift - 使用纹理数组更改 SKSpriteNode 纹理
从 SKSpriteNode 类实例访问 GameScene 中的数组?