AndEngine - X秒后杀死雪碧?

Kyl*_* V. 3 java android opengl-es-2.0 andengine

我正在使用AndEngine为Android制作游戏.现在我正在试图弄清楚如何在场景中出现爆炸精灵,然后在X秒之后移除.这是我的爆炸类:

public class Explosion extends Sprite {

    public Explosion(float pX, float pY, ITextureRegion pTextureRegion, VertexBufferObjectManager pVertexBufferObjectManager) {
        super(pX, pY, pTextureRegion, pVertexBufferObjectManager);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想对这个类做些什么来使它与普通的Sprite对象不同,它是为了它出现,然后在一定的时间后被销毁.如何使用AndEngine完成此操作?

编辑:如果可以在不必创建扩展Sprite的自定义Explosion类的情况下关闭它,那么我宁愿这样做,因为它会更整洁.

另请注意,在不同的时间创建屏幕上会有多次爆炸,所以我希望每次爆炸都有自己的个人寿命.

jmr*_*lty 8

根据您的需要,您可以使用多种技术.如果爆炸是动画的,我只需使用带有IAnimationListener的AnimatedSprite来捕捉动画更改帧和/或完成时的陷阱,然后删除爆炸精灵.

或者,您可以使用DelayModifier - 我使用其中一个"溶解岩石"

或者,您可以使用几乎任何其他修改器 - 如移动修改器,如QuadraticBezierCurveMoveModifier,或Modifer,如AlphaModifier.

无论使用哪种修饰符,都附加一个IEntityModifierListener(),并在onModifierFinished中清除爆炸.

以下代码使用该技术"淡化"游戏板上的分数

gemScore.registerEntityModifier(new AlphaModifier(2f, 1f, 0f, new IEntityModifierListener() {

        @Override
        public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
            // TODO Auto-generated method stub
            runOnUpdateThread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    board.detachChild(gemScore);
                }
            });
        }
    }));
Run Code Online (Sandbox Code Playgroud)

HTH

这是DelayModifier的一个示例 - 相同的基本结构

mainScene.registerEntityModifier(new DelayModifier(3, new IEntityModifierListener() {

        @Override
        public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
            // TODO Auto-generated method stub
            runOnUpdateThread(new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    mainScene.detachChild(sign);
                }
            });
        }
    }));
Run Code Online (Sandbox Code Playgroud)