如何停止动画循环,而不是 Phaser 3 中的动画?

How can I stop animation loop, but not mid-animation in Phaser 3?

我有一个动画,通常应该播放 3 次,因此当前配置为 repeat: 2。但是,在某种情况下(播放器停止拖动元素)我希望动画完成并停止而不重复。

我的意思是我不希望它在第二帧停止,但我希望它完成播放到我在 frames 中分配的最后一帧,然后在之前停止它重复。

我怎样才能做到这一点?

// ANIMATION CREATED HERE
this.anims.create({
        key: "nom",
        frameRate: 12,
        frames: this.anims.generateFrameNames("chara", {
            prefix: "nom_000",
            start: 0,
            end: 4}),
        repeat: 2,
    });

this.input.on('drag', (activePointer, gameObject, dragX, dragY) => {
    gameObject.x = dragX;
    gameObject.y = dragY;
        
    if(Phaser.Geom.Intersects.RectangleToRectangle(gameObject.getBounds(), character.mouth.getBounds())) {  
        gameState.snack_cursor.play("fries_cursor", true);

        // ANIMATION PLAYED HERE
        character.sprite.play("nom", true); 
    }
});

this.input.on('dragend', (pointer, gameObject, dragX, dragY) => {
    if (gameObject.anims.isPlaying)
        gameObject.anims.stop();

    // ANIMATION STOPS HERE, BUT CURRENTLY AT WHATEVER FRAME IT'S AT
    if (character.sprite.anims.isPlaying)
        character.sprite.anims.stop();
});

您可以使用函数 stopAfterRepeat (documentation)。
只需用参数 0 调用它,当前动画将结束,然后动画停止。我想这就是你想要的。

 ...
 character.sprite.anims.stopAfterRepeat(0);
 ...