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类的情况下关闭它,那么我宁愿这样做,因为它会更整洁.
另请注意,在不同的时间创建屏幕上会有多次爆炸,所以我希望每次爆炸都有自己的个人寿命.
根据您的需要,您可以使用多种技术.如果爆炸是动画的,我只需使用带有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)
| 归档时间: |
|
| 查看次数: |
3980 次 |
| 最近记录: |