2017-07-08 6 views
1

Ich habe Probleme mit meiner Animation in Swift. Die Animation spielt nicht.SpriteKit Animation Problem Swift

Das sind meine swift Dateien:

Das ist mein Sprit-Datei:

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") 
} 
} 

Das ist meine GameScene Datei:

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) 
} 

} 

denke ich, das Problem in der belebten Funktion ist in die Sprite-Datei.

Ich habe alles versucht, was mir einfällt. Jede Hilfe würde sehr geschätzt werden.

+0

Prüfen, ob die for-Schleife gerade ausgeführt wird. Setzen Sie einen Haltepunkt darin ... Entfernen Sie auch die .png Verlängerung vom Bildnamen - 'let name =" Hund _ \ (i) "' – Whirlwind

Antwort

2

Innerhalb der Klasse Dog haben Sie einen var Hund, der als SKSpriteNode initialisiert wird. Ihre Start-und Stop-Animate-Funktionen arbeiten dann auf dem Hund, nicht die Klasse selbst und nicht die anderen Hund in Ihrer Spielszene. Da die Hund nie zur Szene hinzugefügt wird, ist Ihre Animation nie sichtbar.

Entfernen Sie die Hund var und Verweise darauf von Dog - die Animationen sollten auf Ihre Unterklasse Hund direkt ausgeführt werden.

+0

Oh yeah. Instanz var Hund aus der Klasse Hund wird nie zu einem Knotenbaum hinzugefügt ... Schön spoted :) – Whirlwind

+0

Es hat funktioniert! Danke für die Hilfe – Grandmango227