5

Is there a way to make the main class - the one based on the main .fla - static? so we could use it as in java, being able to reference it from other classes, because I have to pass the instance of the main itself as a parameter to a class, otherwise I loose reference. I tried to add static prefix but seems as3 doesn't allow it.

4

2 に答える 2

8

AS3 には静的クラスの概念はありません。

シングルトン パターンを使用して、メイン クラスの一意のインスタンスを公開できます。

public class Main extends Sprite {

    public static var instance:Main;

    public function Main() {
         instance = this;
    }

static...または、管理が難しくなりますが、他のプロパティ/メソッドを公開するようにマークするだけです。

ただし、使用するとコード設計が不適切になる場合があることを言及する必要があります(代わりに、インスタンスをコンストラクターを介して必要なクラスにstatic渡すことができます)Main

于 2012-11-21T15:43:32.690 に答える
3

これは一般的な答えではないことはわかっています...静的プロパティを使用してインスタンスを公開することは、本当に悪い考えです。Singleton アンチパターンは非常に人気がありますが、そうすべきではありません。悪い慣行につながり、クラスを不必要に相互に関連付けます。

他のクラスでメイン クラスを参照する必要があるかどうかを自問する必要があります。AS3 には、必要なすべての疎結合を提供できるイベント システムがあります。表示オブジェクトがメイン クラス インスタンスと通信する必要がある場合は、表示リストを介してイベントを送信することで実現できます。

依存関係管理の問題は、依存関係注入フレームワークによって最もよく処理されます (その多くは、イベント オーバー ザ ディスプレイリストをはるかに凌駕する集中メッセージング システムを備えています)。人気のあるもの (PureMVC、RobotLegs など) のいずれかがやり過ぎだと感じた場合は、簡単に (単純で限定的なもの) 自分で作成できます。

シングルトンや静的インスタンス アクセサーに頼らなくても済むようにするためのツールやパターンはたくさんあります。

于 2012-11-21T17:21:14.407 に答える