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 を取得する方法がわかりません。また、インターネットで解決策を見つけることができませんでした。
誰が何をすべきか知っていますか?
ありがとう