sprite-kit
SKAction
Поиск…
Создание и запуск простого SKAction
Очень простой пример - выпустить SKSpriteNode.
В Свифт:
let node = SKSpriteNode(imageNamed: "image")
let action = SKAction.fadeOutWithDuration(1.0)
node.runAction(action)
Создание повторяющейся последовательности действий
Иногда нужно делать действие на повторение или в последовательности. В этом примере узел будет исчезать и исчезать в общей сложности в 3 раза.
В Свифт:
let node = SKSpriteNode(imageNamed: "image")
let actionFadeOut = SKAction.fadeOutWithDuration(1.0)
let actionFadeIn = SKAction.fadeInWithDuration(1.0)
let actionSequence = SKAction.sequence([actionFadeOut, actionFadeIn])
let actionRepeat = SKAction.repeatAction(actionSequence, count: 3)
node.runAction(actionRepeat)
Запуск блока кода в SKAction
Один полезный случай - заставить действие запустить блок кода.
В Свифт:
let node = SKSpriteNode(imageNamed: "image")
let actionBlock = SKAction.runBlock({
//Do what you want here
if let gameScene = node.scene as? GameScene {
gameScene.score += 5
}
})
node.runAction(actionBlock)
Именованные действия, которые могут быть запущены или удалены из других источников.
Иногда вы хотели бы запустить или удалить действие на определенном узле в определенное время. Например, вы можете остановить движущийся объект, когда пользователь закроет экран. Это становится очень полезным, когда узел имеет несколько действий, и вы только хотите получить доступ к одному из них.
let move = SKAction.moveTo(x: 200, duration: 2)
object.run(move, withKey: "moveX")
Здесь мы устанавливаем ключ «moveX» для move
действия, чтобы получить доступ к нему позже в другой части класса.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
object.removeAction(forKey: "moveX")
}
Когда пользователь коснется экрана, действие будет удалено, и объект перестанет двигаться.