2012-08-15 103 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