我使用AndEngine库创建了动态壁纸服务。屏幕上有一只小鸟雪碧,它从左到右反复飞行。我正在使用LoopEntityModifier和PathModifier作为解决方案。每次从左屏幕出现时,该鸟都被编码为在Y位置随机开始。
代码是这样的:
public class MyLiveWallpaperService extends BaseLiveWallpaperService {
private AnimatedSprite birdSprite;
...
public Scene onLoadScene() {
...
float[] coordY = generateRandomCoordY(); // my custom function to generate random array of Y-coordinates
Path path = new Path(coordX, coordY); // set the coordinate to Path object
// register the modifiers (for the one who is curious, 1st argument of PathModifier is the duration,
// but it has nothing to do with the question)
birdSprite.registerEntityModifier(new LoopEntityModifier(new PathModifier(10, path)));
...
}
}
问题是,当LoopEntityModifier和PathModifier运行后,无法再更改Path的Y坐标值。我希望每次循环开始时,都可以再次设置新路径的Y坐标值。
最佳答案
我认为您可以通过重写onModifierFinished()并使用更改的路径创建新的PathModifier来解决此问题。它看起来像这样:
public LoopEntityModifier createModifier(Path path) {
return new LoopEntityModifier(new PathModifier(path)) {
@Override
public void onModifierFinished(final IModifier<IEntity> pEntityModifier, final IEntity pEntity) {
birdSprite.registerEntityModifier(createModifier(path));
}
}
}
birdSprite.registerEntityModifier(createModifier());
仅在每个循环结束时调用onModifierFinished()时,此方法才有效。
关于android - 如何在LoopEntityModifier的开头随机设置PathModifier的坐标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10244310/