当我尝试通过触摸来取消注册触摸区域时,它会抛出异常。
这是我的代码:
Rectangle a = new Rectangle(500, 500, 200, 200, getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
// TODO Auto-generated method stub
if(pSceneTouchEvent.isActionUp()){
System.out.println("bum");
TestScene.this.unregisterTouchArea(this);
}
return super
.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}
};
this.attachChild(a);
this.registerTouchArea(a);
这是例外,它引发了我:
02-02 16:05:52.241: W/dalvikvm(28930): threadid=11: thread exiting with uncaught exception (group=0x415bcba8)
02-02 16:05:52.241: E/AndroidRuntime(28930): FATAL EXCEPTION: UpdateThread
02-02 16:05:52.241: E/AndroidRuntime(28930): Process: com.example.testing, PID: 28930
02-02 16:05:52.241: E/AndroidRuntime(28930): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
02-02 16:05:52.241: E/AndroidRuntime(28930): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
02-02 16:05:52.241: E/AndroidRuntime(28930): at java.util.ArrayList.get(ArrayList.java:308)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.entity.scene.Scene.onSceneTouchEvent(Scene.java:354)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.engine.Engine.onTouchScene(Engine.java:454)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.engine.Engine.onTouchEvent(Engine.java:440)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.input.touch.controller.BaseTouchController$TouchEventRunnablePoolItem.run(BaseTouchController.java:102)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:54)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:1)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.util.adt.pool.PoolUpdateHandler.onUpdate(PoolUpdateHandler.java:88)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.input.touch.controller.BaseTouchController.onUpdate(BaseTouchController.java:62)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.engine.Engine.onUpdate(Engine.java:588)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.engine.Engine.onTickUpdate(Engine.java:552)
02-02 16:05:52.241: E/AndroidRuntime(28930): at org.andengine.engine.Engine$UpdateThread.run(Engine.java:842)
我正在使用andEngine anchorcenter。 有人知道如何解决它吗? 感谢
答案 0 :(得分:0)
boolean isTouchRegister = true;
Rectangle a = new Rectangle(500, 500, 200, 200, getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
// TODO Auto-generated method stub
if(pSceneTouchEvent.isActionUp() && isTouchRegister){
System.out.println("bum");
// TestScene.this.unregisterTouchArea(this);
isTouchRegister = false
}
return isTouchRegister;
}
};
this.attachChild(a);
this.registerTouchArea(a);