フォーラムの投稿とチュートリアルを通して多くの読書をしましたが、私はまだ脳のラウンドイベントとイベントリスナーをラップできません。私はかなり簡単な例がありますが、それを動作させることはできません。as3でカスタムイベントリスナを追加する
リピーターにカスタムオブジェクトのarrayCollectionがあります。そのオブジェクトの1つがクリックされたときに、そのオブジェクトに関連付けられたデータを表示する別のコンポーネントが必要です。
これは私が持っているものですが、リスナーは応答しません(ディスパッチャは動作しているようですが、新しいイベントが作成され、正しい出力でトレースが表示されるためです)。リスナー、私は間違った物にそうしています。私の理解は、オブジェクトデータを表示するオブジェクトは、イベントリスナーを持つべきオブジェクトであり、この性質のすべてのイベントを待ち受けますが、誤解されている可能性があります。
マイカスタムイベント:
public class SelectObjectEvent extends Event
{
public function SelectObjectEvent(customEventString:String, myObject:customObject)
{
super(customEventString, true, false);
trace(customEventString+" "+myObject);
}
}
}
マイカスタムオブジェクトクリックで呼び出され、次の機能があります。
public function selectObject(myObject:customObject):void
{
dispatchEvent(new SelectObjectEvent("OBJECT_SELECTED", customObject));
}
そして、私は、選択したオブジェクトを表示するコンポーネントを次のコンストラクタがあります。
public function SelectedObjectDisplayClass()
{
addEventListener("OBJECT_SELECTED", this.showObject)
}
public function showObject(event:Event):void
{
trace("Show object: "+event);
}
まあ...はい、第二のチャンクがイベントを送出するオブジェクトに属しているが、それはクリックできない、そしてそれは私の知る限りのEventDispatcher拡張していません(それはUIComponentを拡張します。)それはですListコンポーネントに座っているゲームオブジェクトです。リスト内のそのオブジェクトが選択されると、そのイベントが送出されます。イベントをディスパッチするすべてのオブジェクトは、EventDispatcherを拡張する必要がありますか? – Martholomew
多分私の問題は、リストは、引数に選択されたオブジェクトで、イベントをディスパッチする必要がありますか? – Martholomew
さて、DisplayObjectはEventDispatcherを拡張しているので、あなたがステージ上に持っているものも同様です。私はイベントを誰が派遣すべきか分かりません。誰がそうするべきかを知っている人はいますが、それはあなたのコードに当てはまります。明確なのは、Aがイベントをディスパッチし、Bがそれを受け取った場合、あなたのコールはsomeA.addEventListener(eventType、someB.method)である必要があるということです。今はBさんにイベントリスナーを追加しているようです。 – fenomas