2012-08-15 190 views
0

我正在写我的AndEngine的BaseGameActivity定制的对话窗口,有时,当对话框必须dissapear,应用程序崩溃,出现此错误:AndEngine:在GLThread致命异常:IndexOutOfBoundsException异常

08-15 09:49:16.193: ERROR/AndroidRuntime(1572): FATAL EXCEPTION: GLThread 
     java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3 
     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 
     at java.util.ArrayList.get(ArrayList.java:304) 
     at org.anddev.andengine.entity.Entity.onManagedDrawChildren(Entity.java:1008) 
     at org.anddev.andengine.entity.Entity.onDrawChildren(Entity.java:1000) 
     at org.anddev.andengine.entity.Entity.onManagedDraw(Entity.java:993) 
     at org.anddev.andengine.entity.scene.Scene.onManagedDraw(Scene.java:233) 
     at org.anddev.andengine.entity.Entity.onDraw(Entity.java:875) 
     at org.anddev.andengine.engine.Engine.onDrawScene(Engine.java:517) 
     at org.anddev.andengine.engine.Engine.onDrawFrame(Engine.java:509) 
     at org.anddev.andengine.opengl.view.RenderSurfaceView$Renderer.onDrawFrame(RenderSurfaceView.java:154) 
     at org.anddev.andengine.opengl.view.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:617) 
     at org.anddev.andengine.opengl.view.GLSurfaceView$GLThread.run(GLSurfaceView.java:549) 

回答

9

我发现它当你试图脱离孩子在后台线程可能发生,所以你必须使用要分离的东西此代码每次:

activity.runOnUpdateThread(new Runnable() { 
    @Override 
    public void run() { 
     scene.detachChild(child); 
    } 
}); 
+0

上更新线程没有帮助 – 2013-05-07 06:56:51

+0

你确保所有拆卸都在runOnUpdates运行?而且,可能还有这个错误的另一个原因?它为我工作。 – 2013-05-07 10:30:52

+0

对不起,但我不确定。因为我的游戏越来越大w /很多源代码.. 我决定为这种情况下补丁,以避免更多的错误。如果你有兴趣,请在这里看看。 https://github.com/rgv151/AndEngine/commit/749e5a2a8de907e8efbe40f2f84e19c4cd5b07a1。谢谢 – 2013-05-08 09:22:38