2017-02-05 1 views
0

Ich versuche Animationen mit Phaser zu verketten.Phaser animation help - Verkettung von Animationen zusammen

Wenn intro0 fertig ist, muss ich die in intro1 definierte Animation spielen. Die Animation in Intro 1 bleibt jedoch in der Schleife. Ich brauche eine Möglichkeit, die bestehende Animation zu stoppen, um die neue zu starten.

Wenn ich den this.player.animations.stop im Intro1 verwende, stoppen alle Animationen einfach. Die Leerlaufanimation wird nicht ausgeführt

Kann jemand helfen?

intro0: function() { 
    this.player.animations.play("run", 9, true); 
    var s = this.game.add.tween(this.player); 
    s.to({ y: 300,x:192 }, 3000, null) 
    s.start(); 
    s.onComplete.add(this.intro1, this); //Which uses the Signals retains scope 

}, 

intro1: function() { 
    this.player.animations.play("idle", 9, false); 
}, 

Antwort

0

Ich verstehe, dass: Es gibt ein Sprite mit einer unendlichen Animation ist aber, wenn die Interpolation Ereignis endet die aktuelle Animation endet und beginnt eine andere Animation, nachdem er dann das Sprite Fertigstellung zerstört werden müssen. Wenn die neue Animation ein anderes Sprite ist nehme ich Sie Loadtexture() verwenden:

s.onComplete.add(function() { 
        //The third parameter indicates whether to stop the current animation 
        player.loadTexture('texture', 0, true); 
        player.animations.add('idle'); 
        //The fourth parameter indicates whether the sprite should be killed after the animation is finished 
        player.animations.play('idle', 9, false, true); 
       }, this); 

Wenn Sie eine bestimmte Anzahl von Frames animieren möchten Sie Folgendes tun:

player.animations.add('run', [0,1,2,3]); 
    player.animations.add('idle', [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]); 
    player.animations.play('run', 10, true); 

    var s = game.add.tween(player); 
    s.to({ y: 300,x:192 }, 3000, null); 
    s.start(); 
    s.onComplete.add(function() { 
         player.animations.stop(); 
         player.animations.play('idle', 9, false, true); 
        }, this);