AndEngine:在GLThread致命异常:IndexOutOfBoundsException异常 [英] AndEngine: Fatal exception in GLThread: IndexOutOfBoundsException

查看:504
本文介绍了AndEngine:在GLThread致命异常:IndexOutOfBoundsException异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在写我的AndEngine的BaseGameActivity定制的对话窗口,有时,当对话框不得不dissapear,应用程序崩溃,出现此错误:

  9月8日至15日:49:16.193:ERROR / AndroidRuntime(1572):致命异常:GLThread
        java.lang.IndexOutOfBoundsException:无效指数3,大小为3
        在java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
        在java.util.ArrayList.get(ArrayList.java:304)
        在org.anddev.andengine.entity.Entity.onManagedDrawChildren(Entity.java:1008)
        在org.anddev.andengine.entity.Entity.onDrawChildren(Entity.java:1000)
        在org.anddev.andengine.entity.Entity.onManagedDraw(Entity.java:993)
        在org.anddev.andengine.entity.scene.Scene.onManagedDraw(Scene.java:233)
        在org.anddev.andengine.entity.Entity.onDraw(Entity.java:875)
        在org.anddev.andengine.engine.Engine.onDrawScene(Engine.java:517)
        在org.anddev.andengine.engine.Engine.onDrawFrame(Engine.java:509)
        在org.anddev.andengine.opengl.view.RenderSurfaceView $ Renderer.onDrawFrame(RenderSurfaceView.java:154)
        在org.anddev.andengine.opengl.view.GLSurfaceView $ GLThread.guardedRun(GLSurfaceView.java:617)
        在org.anddev.andengine.opengl.view.GLSurfaceView $ GLThread.run(GLSurfaceView.java:549)


解决方案

我发现,当你试图分离的孩子在后台线程可能会发生,所以你必须使用要分离这个code,每次东西:

  activity.runOnUpdateThread(新的Runnable(){
    @覆盖
    公共无效的run(){
        scene.detachChild(小孩);
    }
});

I'm writing a custom dialog window for my AndEngine's BaseGameActivity and sometimes, when dialog have to dissapear, app crashes with this error:

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)

解决方案

I have found that it may happen when you trying to detach child in a background thread, so you have to use this code everytime you want to detach something:

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

这篇关于AndEngine:在GLThread致命异常:IndexOutOfBoundsException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆