1

我使用 AndEngine 库创建了一个动态壁纸服务。在屏幕上,有许多从左到右反复飞行的鸟 Sprite 对象以随机 y 坐标开始(我为此使用 LoopEntityModifier 和 PathModifier,如果你好奇,请参阅我之前的问题)。鸟儿不应该同时开始飞行,但是在另一只鸟儿从屏幕最左侧出现之前大约有 3 秒的间隔/间隔。

问题是我必须使用什么技术来实现这一目标?

我创建了一组 Sprites 来保存鸟类精灵。代码是这样的...

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

上面的代码生成了四只鸟,它们同时出现在左侧屏幕上。我尝试在调用 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 回答