1

AndEngineライブラリを使用してライブ壁紙サービスを作成しました。画面には、ランダムなy座標で開始された左から右に繰り返し飛行する多数の鳥のスプライトオブジェクトがあります(これにはLoopEntityModifierとPathModifierを使用しています。興味がある場合は、前の質問を参照してください)。鳥が同時に飛行を開始するべきではありませんが、別の鳥が画面の左端から現れるまでに約3秒のギャップ/間隔があります。

問題は、それを達成するためにどのようなテクニックを使用する必要があるかということです。

鳥のスプライトを保持するために、スプライトの配列を作成しました。コードはこんな感じです...

public class MyLiveWallpaperService extends BaseLiveWallpaperService {

    private BirdSprite[] birdSprites;    // BirdSprite is actually an extension class from AnimatedSprite
    ...

    @Override
    public Scene onLoadScene() {
        ...
        birdSprites= new BirdSprite[4];
        for (int i=0; i<4; ++i) {
            birdSprites[i] = new BirdSprite(0, 0, birdTextureRegion);

            scene.getChild(LAYER_FRONT).attachChild(birdSprites[i]);
        }
    }
}

上記のコードは、左側の画面に同時に表示される4羽の鳥を生成します。attachChildを呼び出す前にThread.sleep(3000)を追加してみましたが、アプリケーション全体に影響します。ライブ壁紙アプリケーションは、起動時に数秒間ハングします。

4

1 に答える 1

1

これは、TimerHandlerを使用して見つけた解決策です。

    scene.registerUpdateHandler(new TimerHandler(3, true, new ITimerCallback() {

        @Override
        public void onTimePassed(TimerHandler pTimerHandler) {
            // your code here will be executed every 3 seconds (see 1st argument of TimerHandler)
            ...
            scene.getChild(LAYER_FRONT).attachChild(birdSprites[i]);
        }
    }));

より良い解決策があれば教えてください。

于 2012-04-23T17:31:31.670 に答える