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

Naf*_*fis 5 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)
Run Code Online (Sandbox Code Playgroud)

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

sim*_*onp 7

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

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

  • 您可以在onModifierFinished中将其分离,只要您将其包含在我的示例中的"runOnUpdateThread"中即可.这样可以正常工作,因为它不会在当前线程中运行分离 - 而是告诉"更新线程"尽快执行它. (2认同)