EaselJSの次期バージョンにおけるイベントのバブリングとマウスイベント [Edit]

7月19日にCreateJSの開発者Grant Skinner氏よりEaselJSの次期バージョン(NEXT)について、Google Groupsに「Event Bubbling + mousemove & mouseup」と題する投稿がありました。イベントのバブリングとmousemoveおよびmouseupイベントについてふたつの選択肢を示し、ユーザーの意見を求めたものです。その内容をかいつまんでご説明します。

CreateJSのイベントにバブリングやキャプチャの機能が加えられるようです。これは、表示リストの親子の間をイベントが、上または下方向に伝わる仕組みです。ただ、マウスイベントについては、これまでの互換性を保ったまま組入れることは難しいようです。

mousemoveとmouseupのイベントは、表示リストの中すべてにゆき渡らせることは、負荷がきわめて高くなります。そのため、今のイベントモデルでは、マウスボタンを押したイベントオブジェクト(MouseEvent)のリスナーがイベントの受け手となっています。

mousemoveとmouseupのイベントを送る今の仕組みなら、負荷は低く、簡単に使えます。けれど、イベントモデルとしてすっきりしません。イベントオブジェクトがイベントを送ることや、その受取ったイベントのターゲットをどう決めればよいか(マウスボタンを押した表示オブジェクトか配信したイベントオブジェクトか)ということなどです。

EaselJS NEXTつまり0.7.0では、ふたつの選択肢が考えられています。

  1. マウスボタンを押したイベントオブジェクトから配信する現在のモデルを維持する
    この場合、マウスイベントだけはバブリングせず、すっきりしない仕組みのままになります。その代わり、これまでとの互換性は大きく保たれます。ただし、targetプロパティの参照はイベントを配信するオブジェクトとし、表示オブジェクトにはrelatedTargetというプロパティを充てるでしょう。

  2. 新たなマウスイベントとしてpressmoveとpressupを加える
    これらのイベントはバブリングやターゲットについて、他のイベントと足並みが揃います。mousedownイベントのターゲットから、マウスボタンを押している間イベントが配信されます。mousemoveやmouseupのイベントを表示リストに拡げたとしても、上位互換性は保たれます。

2の選択肢をとった場合には、現在の仕組みは非推奨とし、バージョン0.8でonEventハンドラとともにライブラリから除かれることになるでしょう。

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事