java - 如何在不同的时间启动多个移动的 Sprite 对象?

标签 java android opengl-es andengine

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

问题是我必须使用什么技术来实现它?

我创建了 Sprites 数组来容纳小鸟 sprite。代码是这样的……

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),但它会影响整个应用程序。动态壁纸应用程序在启动时会挂起几秒钟。

最佳答案

这是我通过使用 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]);
        }
    }));

如果您有更好的解决方案,请告诉我。

关于java - 如何在不同的时间启动多个移动的 Sprite 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10276697/

相关文章:

java - 如何从在 Linux 上运行的 Java 应用程序加载 native 库 (.dll)?

java - 我正在尝试使用按值排序的 HashMap 来构建一棵树。

java - 设备处于 sleep 模式时 onResume 和 onPause 循环?

android - GoogleApiClient 的 enableAutoManage() 需要一个 fragment Activity ,但我有一个 Activity

java - android - 为什么我的 editText 不显示?

Android OpenGLES 设备问题

character-encoding - 操作系统之间的字符串构造函数差异

java - 使用 C++ 和 Java 进行 Android OpenGLES 渲染

java - 从 OpenGL ES 1.0 切换到 2.0

Java - 为简单的计算器程序解析字符串的问题