在for循环中更改SKNode的子项的属性

时间:2015-02-01 04:11:41

标签: swift for-loop sprite-kit sknode

我知道SKNode的children属性是只读属性。仍然有一种方法,在迭代孩子时,有可能改变那些孩子的属性吗?

例如:

let background = SKSpriteNode(imageNamed: "Background.jpg")   
for child in background.children{
     child.position = CGPoint(x: 0, y: 0)
}

2 个答案:

答案 0 :(得分:2)

您可以将孩子投射到SKNode,然后更改位置。

for child in self.children {
    if let sprite = child as? SKNode {
        sprite.position = CGPoint(x: 0, y: 0)
    }
}

答案 1 :(得分:1)

children 属性是readonly,因此您无法使用此属性添加或删除元素(子元素)(有特定方法可以执行此操作)。

但是,您可以修改 background.children 中的元素的某些属性。

for child in background.children as [SKNode] {
    child.position = CGPoint(x: 0, y: 0)
}

background.children转换为[SKNode] 是安全的,并由documentation保证。