我正在使用AndEngine为Android制作游戏。现在我正在试图弄清楚如何让爆炸精灵出现在场景中,然后在 X 秒之后被删除。这是我的爆炸课:
public class Explosion extends Sprite {
public Explosion(float pX, float pY, ITextureRegion pTextureRegion, VertexBufferObjectManager pVertexBufferObjectManager) {
super(pX, pY, pTextureRegion, pVertexBufferObjectManager);
}
}
现在我想对这个类做些什么来使它与普通的Sprite对象不同,它是为了它出现,然后在一定的时间后被销毁。如何使用AndEngine完成此操作?
编辑:如果可以在不必创建扩展Sprite的自定义Explosion类的情况下关闭它,那么我宁愿这样做,因为它会更整洁。
另请注意,屏幕会在不同时间创建多次爆炸,因此我希望每次爆炸都有自己的个人寿命。
答案 0 :(得分:8)
根据您的需要,您可以使用多种技术。如果你的爆炸是动画的,我只是使用一个带有IAnimationListener的AnimatedSprite来捕捉动画改变帧和/或完成时的陷阱,然后移除爆炸精灵。
或者,您可以使用DelayModifier - 我使用其中一种“溶解岩石”
或者,您可以使用几乎任何其他修改器 - 例如像QuadraticBezierCurveMoveModifier这样的移动修改器,或者像AlphaModifier这样的Modifer。
无论使用哪种修饰符,都附加一个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);
}
});
}
}));
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);
}
});
}
}));