libGDX 在最后一帧停止动画
libGDX stop animation at last frame
我有 class 扩展了 Actor。我的动画在带有 stateTime 计时器的 'act' 方法中。以下是此 class 的片段:
@Override
public void act(float delta) {
super.act(delta);
stateTime += delta;
if(!isDeath) {
...
} else {
if(!animationDead.isAnimationFinished(stateTime)){
textureRegion = animationDead.getKeyFrame(stateTime, true);
}
}
}
animationDead 有 PLAYMODE.NORMAL
我正在尝试使用“!animationDead.isAnimationFinished(stateTime)”,但它会在第一帧后停止我的动画。我想在最后一帧后停止动画。
我也在尝试设置 stateTime = 0;但一样,在第一帧后停止。
我遇到的情况与我按下 SPACE 键时的情况相同,我的 'actor' 应该播放战斗动画。但是对于所有战斗动画帧,我必须按住 space 键。点击一下space就是一帧动画
这是此方法的片段:
@Override
public void act(float delta) {
super.act(delta);
stateTime += delta;
if(!isAttacking()) {
...
/* Keyboard events */
...
setAttacking(false);
if (Gdx.input.isKeyPressed(Input.Keys.SPACE)) {
setAttacking(true);
if (moveToRight) {
textureRegion = animationAttack.getKeyFrame(stateTime,true);
} else if (!moveToRight) {
isPlayerFlippedToLeft = true;
textureRegion = animationAttack.getKeyFrame(stateTime,true);
}
setPlayerWidthAndHeight();
}
当你在 Animation 上调用 animationDead.getKeyFrame(stateTime, true);
方法时,Animation's
模式会根据当前的动画模式转换为 PlayMode.LOOP
或 PlayMode.LOOP_REVERSED
。
PlayMode.NORMAL
-> PlayMode.LOOP
PlayMode.REVERSED
-> PlayMode.LOOP_REVERSED
isAnimationFinished(stateTime)
return 如果 不循环播放 .
动画将结束则为真
你为什么不打电话给animationAttack.getKeyFrame(stateTime);
编辑
好的,现在您正在使用 animationAttack.getKeyFrame(stateTime);
您正在为三个不同的 Animation
使用相同的 stateTime
,当需要显示 animationDead
、stateTime
交叉动画 frameduration
和当时isAnimationFinished(stateTime)
return真的所以
if(!animationDead.isAnimationFinished(stateTime)){ //condition false
textureRegion = animationDead.getKeyFrame(stateTime);
}
最终 textureRegion 没有死 TextureRegion
帧。
我有 class 扩展了 Actor。我的动画在带有 stateTime 计时器的 'act' 方法中。以下是此 class 的片段:
@Override
public void act(float delta) {
super.act(delta);
stateTime += delta;
if(!isDeath) {
...
} else {
if(!animationDead.isAnimationFinished(stateTime)){
textureRegion = animationDead.getKeyFrame(stateTime, true);
}
}
}
animationDead 有 PLAYMODE.NORMAL
我正在尝试使用“!animationDead.isAnimationFinished(stateTime)”,但它会在第一帧后停止我的动画。我想在最后一帧后停止动画。
我也在尝试设置 stateTime = 0;但一样,在第一帧后停止。
我遇到的情况与我按下 SPACE 键时的情况相同,我的 'actor' 应该播放战斗动画。但是对于所有战斗动画帧,我必须按住 space 键。点击一下space就是一帧动画
这是此方法的片段:
@Override
public void act(float delta) {
super.act(delta);
stateTime += delta;
if(!isAttacking()) {
...
/* Keyboard events */
...
setAttacking(false);
if (Gdx.input.isKeyPressed(Input.Keys.SPACE)) {
setAttacking(true);
if (moveToRight) {
textureRegion = animationAttack.getKeyFrame(stateTime,true);
} else if (!moveToRight) {
isPlayerFlippedToLeft = true;
textureRegion = animationAttack.getKeyFrame(stateTime,true);
}
setPlayerWidthAndHeight();
}
当你在 Animation 上调用 animationDead.getKeyFrame(stateTime, true);
方法时,Animation's
模式会根据当前的动画模式转换为 PlayMode.LOOP
或 PlayMode.LOOP_REVERSED
。
PlayMode.NORMAL
-> PlayMode.LOOP
PlayMode.REVERSED
-> PlayMode.LOOP_REVERSED
isAnimationFinished(stateTime)
return 如果 不循环播放 .
你为什么不打电话给animationAttack.getKeyFrame(stateTime);
编辑
好的,现在您正在使用 animationAttack.getKeyFrame(stateTime);
您正在为三个不同的 Animation
使用相同的 stateTime
,当需要显示 animationDead
、stateTime
交叉动画 frameduration
和当时isAnimationFinished(stateTime)
return真的所以
if(!animationDead.isAnimationFinished(stateTime)){ //condition false
textureRegion = animationDead.getKeyFrame(stateTime);
}
最终 textureRegion 没有死 TextureRegion
帧。