如何在Android AndEngine中执行动画?

时间:2012-07-27 16:17:22

标签: android animation andengine

当我必须在场景中移动一些精灵时(例如,在100px下移动),我正在使用此代码:

Timer timer = new Timer();
for (int i=0; i<10; i++) {
    delay+=frameDelay;
    timer.schedule(new TimerTask() {
            @Override
            public void run() {
                sprite.setPosition(sprite.getX(), sprite.getY()+10);
            }
        },delay);
}

它有效,但我想知道是否有更多正确和/或更快的可能性来做到这一点。

1 个答案:

答案 0 :(得分:5)

或者查看各种可用的修饰符 - 向上/向下移动,使用MoveYModifier - 类似

yourSprite.registerEntityModifier(new MoveYModifier(time, startY, endY, new IEntityModifierListener() {
                @Override
                public void onModifierStarted(final IModifier<IEntity> pModifier, final IEntity pItem) {
                    yourActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            //Do anything here that you want to happen when the Modifier starts - like start a sound playing, etc
                        }
                    });
                }

                @Override
                public void onModifierFinished(final IModifier<IEntity> pEntityModifier, final IEntity pEntity) {
                    yourActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            //Do anything here that you want to happen after the Modifier is through - like stop playing a sound, etc
                            }
                        }
                    });
                }
            }, EaseBounceOut.getInstance()));

EaseBounceOut.getInstance()只是一个例子 - 它导致Sprite在结尾处反弹 - 还有很多其他的EaseFunction可用。