3

Flashアプリ(FlashDevelopを備えたAS3のみ)を構築していますが、イベントシステムの周囲で物事を緩く結合するのに問題があります。私は中央イベントシステムと静的イベントディスパッチャーについて多くのことを読みましたが、それらは私にとっては完全に適合していません。

私が作っているのはビデオプレーヤーに似ています。アプリの他のすべての小さな部分の親であるPlayerクラスがあります。PlayerクラスはSpriteを拡張し、現在、複数のPlayerをインスタンス化してステージに配置できるように設計しています。EventDispatcherを拡張するControllerクラスもあり、このクラスを介してすべてのイベントをディスパッチします。中心的なイベントクラスです。

問題は、他のすべてのクラスがディスパッチしてリッスンできるように、このクラスへの参照を渡す必要があることです。 参照の受け渡しは機能しますが、緩い結合とは正反対です。すべてのクラスが見ることができる静的なEventDispatcherを作成できることは知っていますが、ステージ上に2つまたは3つのプレーヤーがいる場合、すべてのクラスがお互いのイベントを聞くことになります。

参照を渡したり静的にしたりせずに、 Playerインスタンスのすべての子クラスが中央ディスパッチャーを認識できるようにするタイプのサンドボックスを作成するにはどうすればよいですか?

4

2 に答える 2

0

私が本当に理解しようとしていたのは、依存性注入のようなものを使用した緩い結合でした。

とにかくあまりやらないので、AS3プロジェクトでこれをやることは決してありませんでした。最近、より多くのC#を実行したことで、 StructureMapNinjectなどのライブラリを使用してこの概念をより簡単に理解できました。

AS3の場合、Robotlegsのようなフレームワークを使用できます。これにより、AS3のコーディング方法が変わる可能性があり、すべての開発者/状況に当てはまるとは限りません。

于 2012-07-11T17:35:04.430 に答える
0

静的ディスパッチャーを使用することをお勧めします。これには、どのPlayerインスタンスがイベントをディスパッチするかを通知できるIDメカニズムがあります。

于 2011-08-22T23:13:43.917 に答える