Я довольно новичок в программировании на iOS. У меня есть функция в моей игровой сцене, которая перемещает массив SKSpriteNodes. После того как каждое перемещение завершено, его узел должен быть удален со сцены. Функция также имеет функцию завершения, которую следует называть ПОСЛЕ удаления всех SKNodes. Мой вопрос в том, что если есть более чистый способ просто добавить немного дополнительного времени к длительности движения moveAction до тех пор, пока не будет вызвана функция завершения (см. Ниже). Я также играл с последовательностями действий, но не мог найти рабочего решения ...Правильно обнаружить завершение одновременных SKActions
Всякая помощь будет оценена!
func animateNodes(nodes: Array<SKSpriteNode>, completion:() ->()) {
let duration = NSTimeInterval(0.5)
for (_, node) in nodes.enumerate() {
let point = CGPointMake(node.position.x - 80, node.position.y + 80)
let moveAction = SKAction.moveTo(point, duration: duration)
let fadeOutAction = SKAction.fadeAlphaTo(0, duration: duration)
node.runAction(SKAction.group([moveAction, fadeOutAction]), completion: {
node.removeFromParent()
})
}
runAction(SKAction.waitForDuration(duration + 0.1), completion:completion)
}
Это хорошая идея! Я думал, что будет возможность как-то запустить все действия сразу и вызвать функцию после завершения всех действий, но это решение отлично подходит и для меня, спасибо! ;) – biedert