Как мне прервать SKAction.animate, который вечно повторяется, чтобы запускать другую анимацию каждый раз, когда вызывается .touchesBegan? - PullRequest
0 голосов
/ 06 июля 2018

У меня есть игра в SpriteKit, где персонаж использует одну анимацию навсегда, чтобы создать иллюзию, по которой он подпрыгивает.

let frankieTexture = SKTexture(imageNamed: "image1.png")
    let frankieTexture2 = SKTexture(imageNamed: "image2.png")
    let frankieTexture3 = SKTexture(imageNamed: "image3.png")

    let frankieBounceAnimation = SKAction.animate(with: [frankieTexture, frankieTexture2, frankieTexture3], timePerFrame: 0.3)
    let makeFrankieBounce = SKAction.repeatForever(frankieBounceAnimation)

    frankie = SKSpriteNode(texture: frankieTexture)

    frankie.position = CGPoint(x: self.frame.midX - 250, y: self.frame.midY - 450)
    frankie.size = CGSize(width: frame.size.width * 0.25, height: frame.size.height * 0.25)

    frankie.run(makeFrankieBounce)

Затем, при касании Began, когда пользователь касается экрана, я хочу прервать эту анимацию и заменить ее другой анимацией. Вот этот:

let frankieOtherAnimationTexture1 = SKTexture(imageNamed: "OtherAnimation1.png")
    let frankieOtherAnimationTexture2 = SKTexture(imageNamed: "OtherAnimation2.png")
    let frankieOtherAnimationTexture3 = SKTexture(imageNamed: "OtherAnimation3.png")
    let frankieOtherAnimationTexture4 = SKTexture(imageNamed: "OtherAnimation4.png")

    let frankieOtherAnimationAnimate = SKAction.animate(with: [frankieOtherAnimationTexture1, frankieOtherAnimationTexture2, frankieOtherAnimationTexture3, frankieOtherAnimationTexture4], timePerFrame: 0.2)

    let makeFrankieOtherAnimation = SKAction.repeat(frankieOtherAnimationAnimate, count: 1)

Как заставить repeatForever приостановить и запустить вторую анимацию, а затем перезапустить? Я играл с несколькими заявлениями «если, то» и, похоже, не смог этого сделать ... Заранее спасибо!

1 Ответ

0 голосов
/ 06 июля 2018

Вау! Извините всех ... после нескольких часов игры я понял, что забыл

Frankie.run(SKAction)

в моем коде после моей второй анимации в методе .touchesBegan ... Он работает нормально, без необходимости приостанавливать первую анимацию, которая повторяется вечно.

...