1

アプリのどこからでもエントリ ポイント オブジェクトを参照できるのだろうか? たとえば、ステージのように、グローバルオブジェクトに割り当てられている可能性がありますか?

現在、静的メソッドと変数を使用していますが、これはカプセル化を破ります。

4

2 に答える 2

2

someObjectが表示リストにある場合は、someObject.root探している参照があります。someObject表示リストから削除すると、その参照が失われます。

私の答えはノーです。エントリ オブジェクトに直接アクセスする方法はありません。存在すべきではありません。それがカプセル化の目的です。何かにグローバルにアクセスすることは、ほとんど AS1 の方法です。MainClass を暗黙的に参照してメイン インスタンスにアクセスすると、アプリケーションの一部が密結合されますが、これは一般的に悪いことです。

ただし、それが必要な場合は、いくつかのオプションから選択できます。

  • 静的変数を使用:MainClass.instance
  • シングルトーンのようなアクセスを使用するMainClass.getInstance()
  • パッケージ レベルの変数またはパッケージ レベルの getter メソッドを作成する

私なら後者を選びます。

package com.smth.application 
{
    public var mainObject:MainClass;
} 

// in main app
package com.smth.application 
{
    public function MainClass()
    {
        mainObject = this;
    }
}

静的アクセスに多少似ているように見えるかもしれませんが、このようにすると、コードにある程度の柔軟性が保持されると思います。

于 2011-07-26T10:09:07.653 に答える
1

stageアプリケーションのトップレベルへの参照です。これは、表示ツリー上にある任意の表示オブジェクトを介してアクセスできますmyDisplayObject.stagestageカスタムドキュメントクラスを使用する場合、Bakapiiが言うように、手動で他の何かを0インデックスに強制しない限り、それはの最初の子(インデックス0)になります。

于 2011-07-26T09:01:52.490 に答える