如何停止动画循环,而不是 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);
...
我有一个动画,通常应该播放 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);
...