如何让 AnimatedSprite 播放一次然后自行删除?
我有一个方法 makeExplosion
:
private void makeExplosion(float x, float y){
final AnimatedSprite explosion = new AnimatedSprite(x, y, BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(this.mExplosionBitmapTextureAtlas, this, "explosion.png", 0, 0, 4, 2));
explosion.animate(50);
mScene.attachChild(explosion);
explosion.registerUpdateHandler(new IUpdateHandler(){
@Override
public void onUpdate(float pSecondsElapsed) {
if(explosion.getCurrentTileIndex() == 7){
mScene.detachChild(explosion);
}
}
@Override
public void reset() {
}});
}
..它不起作用。我收到以下错误:
FATAL EXCEPTION: UpdateThread
java.lang.IndexOutOfBoundsException: Invalid index 19, size is 19
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
at java.util.ArrayList.get(ArrayList.java:311)
at org.anddev.andengine.entity.Entity.onManagedUpdate(Entity.java:1024)
at org.anddev.andengine.entity.scene.Scene.onManagedUpdate(Scene.java:250)
at org.anddev.andengine.entity.Entity.onUpdate(Entity.java:882)
at org.anddev.andengine.engine.Engine.onUpdateScene(Engine.java:488)
at org.anddev.andengine.engine.Engine.onUpdate(Engine.java:483)
at org.anddev.andengine.engine.Engine.onTickUpdate(Engine.java:459)
at org.anddev.andengine.engine.Engine$UpdateThread.run(Engine.java:685)
...我假设这是因为我删除了 onUpdate()
中间的 AnimatedSprite
。如果没有这个问题,我怎样才能实现我想要的目标?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当从场景中分离精灵时,它应该在 runOnUpdateThread() 内部分离;
while detach sprite from the scene it should be detached inside of runOnUpdateThread();