AndEngine GLES2-在Entity.java中的IndexOutOfBoundsException:1402

时间:2013-06-08 14:16:45

标签: android andengine

我有以下错误,我不知道:

06-08 19:59:54.367: E/AndroidRuntime(11629): FATAL EXCEPTION: UpdateThread
06-08 19:59:54.367: E/AndroidRuntime(11629): java.lang.IndexOutOfBoundsException: Invalid index 11, size is 0
06-08 19:59:54.367: E/AndroidRuntime(11629):    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
06-08 19:59:54.367: E/AndroidRuntime(11629):    at java.util.ArrayList.get(ArrayList.java:304)
06-08 19:59:54.367: E/AndroidRuntime(11629):    at org.andengine.entity.Entity.onManagedUpdate(Entity.java:1402)
06-08 19:59:54.367: E/AndroidRuntime(11629):    at org.andengine.entity.scene.Scene.onManagedUpdate(Scene.java:284)
06-08 19:59:54.367: E/AndroidRuntime(11629):    at org.andengine.entity.Entity.onUpdate(Entity.java:1167)
06-08 19:59:54.367: E/AndroidRuntime(11629):    at org.andengine.engine.Engine.onUpdateScene(Engine.java:591)
06-08 19:59:54.367: E/AndroidRuntime(11629):    at org.andengine.engine.Engine.onUpdate(Engine.java:586)
06-08 19:59:54.367: E/AndroidRuntime(11629):    at org.andengine.engine.Engine.onTickUpdate(Engine.java:548)
06-08 19:59:54.367: E/AndroidRuntime(11629):    at org.andengine.engine.Engine$UpdateThread.run(Engine.java:820)

我相信它与我在代码中使用的MoveModifier中的onManagedUpdate()有关。

1 个答案:

答案 0 :(得分:7)

这几乎总是由于在错误的线程中分离实体。检查您可能在响应用户交互或修改器回调中分离实体的任何位置,并将其包装在runOnUpdateThread中。 E.g:

@Override
public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
    engine.runOnUpdateThread(new Runnable() {
        @Override
        public void run() {
            widget.detachSelf();
        }
    });
}