独立したクラス間で通信する最も単純な方法は何でしょうか? 私は2日間探していましたが、何も見つかりませんでした。 はクラスにdispatchEventがあり、もう1つにカスタムイベントがあるaddEventListenerがあります。私は親クラスの関係を持つ同じクラスo内のソリューションしか見つけることができませんでしたが、私が探しているのは話す "兄弟"のようなものです ありがとうFlash AS3独立したクラスを伝達する最も良い方法は?
答えて
ChildClass1、ChildClass2、およびParentClassがある場合、 ChildClass1とChildClass2は両方ともParenClassの子です。
ChildClass1はイベントを送出します。 ParentClassはこのイベントをリッスンし、ハンドラはChildClass2を更新します。
ParentClassがない場合は、Childsを登録し、それに応じて通知するChildManagerClassを使用することもできます。
通常、イベントをディスパッチするクラスをEventDispatcher
に拡張するか、IEventDispatcher
に実装する必要があります。派遣のクラスで(すべてのDisplayObject
S行うので、あなたのクラスはDisplayObject
のであれば、あなたは余分な何もする必要はありません。)
:リスニングクラスで
class DispatchingClass extends Event Dispatcher {
function doSomething() {
// do stuff
dispatchEvent(new Event("FOO"));
}
}
:
class ListeningClass {
function startListening(dispatcher:DispatchingClass) {
dispatcher.addEventListener("FOO", handleFoo);
}
function handleFoo(evt:Event) {
// do stuff
}
}
は、
EventDispatcherはカスタムイベントで正常に動作します。何らかの理由で、あなたのリスニングクラスが持っていないし、あなたの派遣クラスのインスタンスを取得できない場合
は、あなたがグローバルイベント放送局を作ることができます。基本的には、普遍的にアクセス可能なクラスを
EventDispatcher
(または
IEventDispatcher
を実装しています)にして、イベントをリッスンし、それを通知するものにイベントをディスパッチします。ここで
は、イベントの放送局の最低限の実装です:
import flash.events.EventDispatcher;
public class EventBroadcaster extends EventDispatcher {
private static var _instance:EventBroadcaster = new EventBroadcaster();
public function EventBroadcaster() {
if (_instance != null) {
trace ("Error: an instance of EventBroadcaster() already exists.");
}
}
public static function getInstance():EventBroadcaster {
return EventBroadcaster._instance;
}
}
あなたはかなり同じようにそれを使用する:
class DispatchingClass {
function doSomething() {
// do something
EventBroadcaster.getInstance().dispatchEvent(new Event("FOO"));
}
}
class ListeningClass {
function startListening() {
EventBroadcaster.getInstance().addEventListener("FOO", handleFoo);
}
function handleFoo(evt:Event) {
// do stuff
}
}
dispatchEvent()
とaddEventListener()
は内蔵からだけで機能していますEventDispatcher
にあります。
イベントブロードキャストの作成方法と便利な機能の追加方法については、Event Broadcaster - Simple events solution...にいくつかのディスカッションがあります。記事Centralized Event Management in Actionscript 2.0にはこのコンセプトの紹介があります。
- 1. AS3のFlashコンテキストを判断する最も良い方法は?
- 2. Flash AS3イベント伝播
- 3. 代替伝達者_pathを指定する最も簡単な方法は?
- 4. Android; ListViewは複数の独立したプログレスバーを表示するための最良の方法ですか?
- 5. アーキテクチャ設計を伝える最も良い方法は何ですか?
- 6. ASP.NET、私のwebformでタスクを達成する最も良い方法は?
- 7. flash as3多次元配列を作成する最良の方法
- 8. 2つの独立したプロットをmatplotlibと組み合わせる最良の方法は何ですか?
- 9. 私はメイクファイルをもっと独立したものにしたいです!
- 10. 独立したクラスのAndroidとSharedPreferences
- 11. Direct3D9で独立したレンダリングレイヤを実装する方法は?
- 12. FlashシンボルのAS3クラス
- 13. アンドロイドスタジオで独立した独立したgradleタスクを実行
- 14. AS3でマウスをクリックした場所の色を取得する最も良い方法
- 15. Clearcaseで最も良い方法は?
- 16. データを持つクラスを継承する最も良い方法は?
- 17. ES6でクラスをインポートして拡張する最も良い方法
- 18. クラス内で複数のクエリを処理する最も良い方法は?
- 19. Pharo Smalltalkクラスの動作を拡張する最も良い方法は?
- 20. xmlレイアウトファイルからカスタムViewクラスを作成する最も良い方法は?
- 21. 独立したプライベートセッション
- 22. 独立したクリックイベントでボタンを追加する方法
- 23. OpenCVタイプの独立した画像アクセスに最適な方法は?
- 24. IE9ベータ版で伝播するクリックイベントを停止する最も良い方法は何ですか?
- 25. インストールされたpackgeメソッドをオーバーライドする最も良い方法
- 26. 新しい値を挿入する最も良い方法
- 27. ダウンロードしたファイルを保存する最も良い方法は何ですか?
- 28. 独立したクラスからのビューコントローラクラスを操作します。
- 29. PHPから.NETクラスを呼び出す最も良い方法は?
- 30. Flash As3ゲーム:クラス質問
もう少し具体例で説明できますか?ありがとうございました –
可能であれば説明してください、私も興味があります。ありがとう、Katax –