5

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

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() 相关。

4

1 回答 1

7

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

@Override
public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {
    engine.runOnUpdateThread(new Runnable() {
        @Override
        public void run() {
            widget.detachSelf();
        }
    });
}
于 2013-06-08T14:23:37.640 回答