Поиск…


Создание и запуск простого 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")
    }

Когда пользователь коснется экрана, действие будет удалено, и объект перестанет двигаться.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow