我正在使用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,并且无法在互联网上找到解决方案。
任何人都知道该怎么做?
由于
答案 0 :(得分:1)
在MultiTouchExample.java中查看TouchDragExample.java或AndEngineExamples。这些都触摸和拖动。多点触控显然是多点触控,但是如果你将当前的一个拖过它们,还有其他实体不会受到打扰。也许这会对你有帮助吗?
如果您还不知道,可以使用this app尝试这些示例。
顺便说一句......只是为了踢,你试过吗
mScene.setTouchAreaBindingOnActionDownEnabled(true);
根据你的帖子判断,我认为你的做法比以往更难。你要做的是一个常见的功能,应该很容易用引擎。