海賊王をめざす男 マツです。こんにちは。

AIR for Android で欠かせないイベントであるタッチイベントについて調べてみました。


Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
fieldGroup.addEventListener(TouchEvent.TOUCH_BEGIN, fieldGroupBegin);
private function fieldGroupBegin(event:TouchEvent):void
{
	logTextArea.text += "fieldGroup Begin" + "\n";
	fieldGroup.addEventListener(TouchEvent.TOUCH_END, fieldGroupEnd);
}
private function fieldGroupEnd(event:TouchEvent):void {
	logTextArea.text += "fieldGroup End" + "\n";
	fieldGroup.removeEventListener(TouchEvent.TOUCH_END, fieldGroupEnd);
}

結果を、logTextArea に表示してみると

fieldGroup Begin
fieldGroup End

このように タッチしたとき、タッチを終えたとき(外したとき)が確認できました。
さて、このタッチイベントは、親子孫の関係が発生した場合どのようになるのでしょうか?
親が子供たちのイベントを無効化してしまうのでしょうか?

親子孫それぞれにタッチイベントを登録して確かめてみました。


	

Group コンポーネントにカスタムコンポーネント Custom.as をレイアウト。
Custom.as では、新たに MovieClip(testMC) を addChild して、

親:fieldGroup
子:testCustom
孫:testMC

このようにして、親子孫それぞれに
TouchEvent.TOUCH_BEGIN
TouchEvent.TOUCH_END
を登録してタッチイベントが実行される順番を確認します。

結果は、

testMC Begin
testCustom Begin
fieldGroup Begin
testMC End
testCustom End
fieldGroup End

親が子供たちのイベントを無効化することなく、イベントごとに

孫:testMC
子:testCustom
親:fieldGroup

の順にタッチイベントが実行されました。

他に PAN、ROTATE、SWIPE、ZOOM などのジェスチャーイベントも加わえて、面白い操作を実現したアプリが開発できそうですね。

HTML5飯