Есть ли способ отменить анимацию в Swift? - PullRequest
0 голосов
/ 23 января 2019

Я сейчас учусь, так что извините за мое невежество.Есть ли способ отменить анимацию в Swift?У меня есть функция, которая имеет некоторые основные анимации в SCNTransaction, и у меня есть кнопка, которая активирует эту анимацию.

func displayAnimation() {
        if let displayAnimationNode = sceneView.scene.rootNode.childNode(withName: "display", recursively: true) {

            SCNTransaction.begin()
            displayAnimationNode.position.y = 3
            displayAnimationNode.eulerAngles.z = -2
            SCNTransaction.animationDuration = 2.5
            SCNTransaction.commit()
        }
    }

Я просмотрел документацию, но, похоже, нет обратного метода.Как сделать анимацию такой же плавной, но наоборот?

1 Ответ

0 голосов
/ 23 января 2019

Используйте SCNAction для добавления обратной анимации.

let moveY = SCNAction.moveBy(x: 0, y: 3, z: 0, duration: 2.5)
let moveZ = SCNAction.moveBy(x: 0, y: 0, z: -2, duration: 2.5)
let moveYZ = SCNAction.sequence([moveY, moveZ])

// You can use group to simultaneously perform animation
// let rotateAndHover = SCNAction.group([moveY, moveZ])

// This line of code will reverse your animation
moveYZ.reversed()    

let repeatForever = SCNAction.repeatForever(moveXZ)

runAction(repeatForever)

Надеюсь, это поможет вам.

...