2015-02-01 2 views
2

Я понимаю, что свойство children SKNode является свойством только для чтения. Тем не менее, есть ли способ, что при итерации над детьми можно было бы изменить свойства этих детей?Изменить свойства для детей SKNode в цикле for

Например:

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

ответ

1

В детях свойство только для чтения, так что вы не можете добавлять или удалять элементы (ребенок), используя это свойство (есть определенные методы, чтобы сделать это).

Однако вы можете изменить некоторые свойства элементов внутри background.children.

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

Кастинг background.children в [SKNode] является безопасным и гарантированный documentation.

2

Вы можете бросить ребенка SKNode, а затем изменить положение.

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