我正在使用 AndEngine 开发一个 android 应用程序。我有一个带有可拖动对象的游戏场景。当一个对象被拖动时,我希望所有其他对象的触摸区域都未注册,这样它们就不会干扰,并且当拖动操作完成时 - 重新注册所有触摸区域。
我尝试在拖动开始时尝试这样做:
touchAreas = gameScene.getTouchAreas();
try {
gameScene.detachChild(towerDragSprite);
gameScene.detachChild(rangeDragSprite);
gameScene.unregisterTouchArea(rangeDragSprite);
for (int i = 0; i < touchAreas.size(); i++)
gameScene.unregisterTouchArea(touchAreas.get(i));
} catch (IllegalStateException e) {
}
当拖动完成时:
if (!pSceneTouchEvent.isActionMove()) {
.
.
.
try {
for (int i = 0; i < touchAreas.size(); i++)
gameScene.registerTouchArea(touchAreas.get(i));
} catch (Exception e) {}
return true;
}
但是当拖动完成时(即使触摸区域不多),我得到了 OutOfMemory 异常。
我看到AndEngine中的一个场景也有一个scene.unregisterTouchAreas(ITouchAreaMathcer pTouchAreaMatcher)
方法,但是我不知道如何获得ITouchAreaMatcher,并且在互联网上找不到解决方案。
有谁知道该怎么做?
谢谢