我正在使用spriteKit进行快速4游戏,并在编写下面显示的循环时遇到错误
override func sceneDidLoad()
{
super.sceneDidLoad()
initialSize = size
let numberWords = ["item1", "item2"]
for items in numberWords {
if defaults.integer(forKey: (items)) == 2{
print(defaults.integer(forKey: (items)))
print((items) , "still found")
(items).texture = SKTexture(imageNamed: "square") //error "Value of type 'String' has no member 'texture'"
}
}
}
游戏中有玩家必须找到的项目列表,我会在找到每个项目后更改其SKTexture。 print语句显示代码正常工作,但我还需要更改节点的纹理,并假设我可以添加此行
(items).texture = SKTexture(imageNamed: "square")
应循环遍历节点并更改纹理......
但我收到了该行的错误
"Value of type 'String' has no member 'texture'"
当我对项目纹理进行硬编码并且纹理按照它们应该更改时,以下代码工作正常,
item1.texture = SKTexture(imageNamed: "square")
item2.texture = SKTexture(imageNamed: "square")
所以我认为错误与循环代码的语法有关?我是初学者,这是我的第一篇文章,所以请原谅我的解释中的任何混淆。
更新
我认为,当我需要将名称用作字符串时,我想通过使用SKspriteNodes“名称”来实现它
override func sceneDidLoad()
{
super.sceneDidLoad()
initialSize = size
item1.name = "item1"
item2.name = "item2"
let numberWords = [item1, item2]
for items in numberWords {
let itemName = (items).name
if defaults.integer(forKey: itemName!) == 2{
print(defaults.integer(forKey: itemName!))
print((itemName!) , "still found")
(items).texture = SKTexture(imageNamed: "square")
}
}
}
答案 0 :(得分:0)
您想要一个具有texture
属性的项目数组,而不是字符串数组,例如
for item in [item1, item2] {
// do whatever you want here, e.g.
item.texture = SKTexture(...)
}
注意,item1
或item2
附近没有引号。