0

シーン上でスプライトを移動する必要がある場合(たとえば、100ピクセル下)、次のコードを使用しています。

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);
}

それは機能しますが、これを行うための多くの正しいおよび/またはより速い可能性があるのだろうかと思います。

4

1 に答える 1

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()は単なる例であり、最後にスプライトをバウンスさせます。他にも多くのEaseFunctionを使用できます。

于 2012-07-27T20:48:26.790 に答える