当我必须在场景中移动一些精灵时(例如,在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);
}
它有效,但我想知道是否有更多正确和/或更快的可能性来做到这一点。
答案 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可用。