私は、基本的な複合パターンを使用してネストされたスプライトを使用して、html キャンバス上に単純なアニメーションを作成するための JavaScript フレームワークに取り組んでいます。
Clutter と Flash (非常によく似た構造) で自分の作品をモデリングしてきました。「ステージ」は、「DisplayObjects」である画面上のすべてのアイテムを保持します。これらは、「DisplayObject」から継承する「DisplayObjectContainer」に集約できます。「ステージ」自体も「DisplayObjectContainer」です。これらはすべて「EventDispatcher」から継承されます。
私はここ数日の大半を、これらのシステムのイベント フローについて読んだり、さまざまなオープン ソース プロジェクトの例を探したりすることに費やしてきました。
私が理解していることから、イベントがディスパッチされると、特定の伝播経路をたどる必要があります。イベントはステージから表示オブジェクト階層 (「キャプチャ」フェーズ) に流れ、そのイベントの「ターゲット」に到達します。 「バブル」は表示階層をバックアップします。これが十分に明確でない場合は、ここにある画像が説明に役立ちます。
http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e4f.html
http://docs.clutter-project.org/docs/clutter/1.4/event-flow.png
これには私が理解できていない側面があり、それが私だけなのか、それとも私が思っているほど不明確なのかはわかりません。
クリックを扱っているとします。ディスプレイをクリックし、ブラウザーのネイティブ イベント処理を使用してクリックの x/y 座標を取得し、それをディスプレイ階層に送信して、クリックしたオブジェクトを特定します。
今まで、これは私のコードの「キャプチャ」フェーズでした。しかし、これは、ターゲットがイベント フローに入るまでに既にイベントにアタッチされている必要があるというドキュメントとは完全に矛盾しています。
表示項目のグラフを 2 回トラバースする必要がありますか?
この問題に関するアドバイスや専門知識をいただければ幸いです。