SpriteKit动画问题Swift

时间:2017-07-08 18:41:28

标签: ios swift animation sprite-kit

我在swift中遇到动画问题。动画没有播放。

这些是我的快速文件:

这是我的精灵文件:

import Foundation
import SpriteKit

class Dog: SKSpriteNode {

var dog = SKSpriteNode()

var textureAtlas = SKTextureAtlas()
var textureArray = [SKTexture]()

init() {
    super.init(texture: SKTexture(imageNamed:"dog_1"), color: UIColor.clear, size: CGSize(width: 44, height: 25))
    textureAtlas = SKTextureAtlas(named: "dog")

    for i in 1...textureAtlas.textureNames.count {

        let name = "dog_\(i).png"
        textureArray.append(SKTexture(imageNamed: name))

    }

}

func animate() {
    dog.run(SKAction.repeatForever(SKAction.animate(with: textureArray, timePerFrame: 0.1)))
}

func stopAnimation() {
    dog.removeAllActions()
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
}

这是我的GameScene文件:

import SpriteKit
import GameplayKit

class GameScene: SKScene {

var dog: Dog!

override func didMove(to view: SKView) {
    scene?.backgroundColor = UIColor(red: 132.0/255.0, green: 179.0/255.0, blue: 255.0/255.0, alpha: 1.0)

    addDog()

}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    dog.animate()
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    dog.stopAnimation()
}

func addDog() {

    dog = Dog()
    dog.position = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)
    addChild(dog)
}

}

我认为问题出在sprite文件中的animate函数中。

我已经尝试了所有我能想到的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

在您的班级 Dog 中,您有一个var dog ,它被初始化为SKSpriteNode。您的启动和停止动画功能然后操作,而不是类本身而不是游戏场景中的其他。由于 dog 永远不会添加到场景中,因此您的动画永远不可见。

从Dog中删除dog var及其引用 - 动画应该直接在你的子类Dog上运行。