ロングタップ後のアップ判定をどうする?

 AndEngine でアニメーションダイアログを実装した際に「ダイアログが開いた後に指を離した際、離した位置にコーラが描画されていると即座にダイアログが閉じてしまう」問題が発生したのですが、このようにして解決しました。

Sprite colaSprite = new Sprite(dialogSprite.getWidth() / 2, dialogSprite.getHeight() / 2, resourcesManager.cola_region, vbom){
	boolean isNewTouch = false;
	@Override
	public boolean onAreaTouched(final TouchEvent pAreaTouchEvent, final float x, final float y){
		if(isTouchOK){
			if(pAreaTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
				isNewTouch = true;
			}
			else if(pAreaTouchEvent.getAction() == TouchEvent.ACTION_UP){
				if(isNewTouch){
					detachSelf();
					closeDialog(sec);
				}
				isNewTouch = false;
			}
		}
		return true;
	}
};

 Sprite に boolean 値 isNewTouch(カップヌードルではない)を加えて、ACTION_DOWN と ACTION_UP がセットで動作しないと detachSelf(); や closeDialog(sec); を実行しないようにしました。
 ロングタップでキャンセルされた ACTION_DOWN の後の ACTION_UP は実行されないのです。
 
 シンプルに解決できるロジックが閃いたこの瞬間が、なんとも気持ちイイ!

 プログラミングの醍醐味です。