独立したクラス間で通信する最も単純な方法は何でしょうか? 私は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. Meteor.js:イベントの伝達を停止する最良の方法
- 4. Qt5でたくさんの独立した文字を描く最も良い方法は?
- 5. utilとしてクラスを作る最も良い方法は?
- 6. flash as3多次元配列を作成する最良の方法
- 7. クラス内のモジュールをインポートする最も良い方法は?
- 8. アーキテクチャ設計を伝える最も良い方法は何ですか?
- 9. Android; ListViewは複数の独立したプログレスバーを表示するための最良の方法ですか?
- 10. マイクロサービスを通じてエラーを伝達するための良い方法
- 11. 代替伝達者_pathを指定する最も簡単な方法は?
- 12. FlashシンボルのAS3クラス
- 13. ASP.NET、私のwebformでタスクを達成する最も良い方法は?
- 14. 2つの独立したプロットをmatplotlibと組み合わせる最良の方法は何ですか?
- 15. 他のクラスの中でPHPクラスを使用する最も良い方法は?
- 16. 独立したレルムオブジェクトの作成方法
- 17. 私はメイクファイルをもっと独立したものにしたいです!
- 18. C++の関数から継承したクラスを返す最も良い方法
- 19. 独立したクラスのAndroidとSharedPreferences
- 20. Flash As3ゲーム:クラス質問
- 21. Direct3D9で独立したレンダリングレイヤを実装する方法は?
- 22. tensorflowで独立したLSTMセルを作成する方法は?
- 23. AS3でマウスをクリックした場所の色を取得する最も良い方法
- 24. 敵を独立させる方法は?
- 25. 配列クラスを注文する最も良い方法は何ですか?
- 26. データを持つクラスを継承する最も良い方法は?
- 27. Clearcaseで最も良い方法は?
- 28. 複数の独立した独立したzipアーカイブに大きなフォルダ(2.4 gb)をアーカイブする方法
- 29. ES6でクラスをインポートして拡張する最も良い方法
- 30. xmlレイアウトファイルからカスタムViewクラスを作成する最も良い方法は?
もう少し具体例で説明できますか?ありがとうございました –
可能であれば説明してください、私も興味があります。ありがとう、Katax –