我使用 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/