1

我使用 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 运行时,路径的 Y 坐标值不能再更改。我希望每次循环开始时,我都可以再次设置新路径的 Y 坐标值。

4

1 回答 1

2

我认为您可以通过覆盖 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() 时才有效。

于 2012-04-20T11:55:22.927 回答