我试图在他空闲时为我的角色设置一个动画,在他左右移动时设置另一个动画。现在我在我的游戏onUpdate中有以下代码:
if (!player_self_sprite.isAnimationRunning())
if (isPlayerMoving)
player_self_sprite.animate(new long[] { 100, 100, 100, 100}, 10 ,14, true);
else
player_self_sprite.animate(new long[] { 100, 100, 100, 100}, 14,18, true);
问题是在“运行”动画尚未完成之前不显示“空闲”动画(即使我的播放器已经停止)另一种方式是相同的:我的播放器可以移动但是动画是空闲的,直到它没有完成。
在Andengine中是否有办法在两种类型的动画之间进行区分?如果我使用“stopAnimation”代码,我可能会停止错误的代码。
答案 0 :(得分:0)
我在100次测试后终于解决了它。诀窍是检测玩家何时从'#34;空闲"移动"移动"并且在onUpdate中反之亦然。当发生这种情况时(比较两个布尔值)我停止正在发生的动画,然后根据isPlayerMoving布尔值启动另一个动画。摘要代码为:
private boolean wasPlayerMoving = false;
private boolean isPlayerMoving = false;
...
Sprite left = new Sprite(-10, CAMERA_HEIGHT - 160, mLeftTextureRegion) {
@Override
public boolean onAreaTouched(TouchEvent pEvent, float pX, float pY) {
if (!pEvent.isActionOutside() && !isDead && !isPaused) {
isPlayerMoving = true;
}
if (pEvent.isActionUp()) {
if (isPlayerMoving) {
isPlayerMoving = false;
}
}
return true;
}
// similar code when pressing Right sprite
...
this.mScene.registerUpdateHandler(new IUpdateHandler() {
public void onUpdate(float pSecondsElapsed) {
// THE TRICK
if (wasPlayerMoving!=isPlayerMoving)
player_self_sprite.stopAnimation();
if (!isNotJumping && !player_self_sprite.isAnimationRunning())
if (isPlayerMoving)
player_self_sprite.animate(...animation when moving..)
else
player_self_sprite.animate(...animation when idle..)
}
wasPlayerMoving = isPlayerMoving;
}