我在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函数中。
我已经尝试了所有我能想到的东西。任何帮助将不胜感激。
答案 0 :(得分:2)
在您的班级 Dog 中,您有一个var dog ,它被初始化为SKSpriteNode。您的启动和停止动画功能然后操作狗,而不是类本身而不是游戏场景中的其他狗。由于 dog 永远不会添加到场景中,因此您的动画永远不可见。
从Dog中删除dog var及其引用 - 动画应该直接在你的子类Dog上运行。