アプリのどこからでもエントリ ポイント オブジェクトを参照できるのだろうか? たとえば、ステージのように、グローバルオブジェクトに割り当てられている可能性がありますか?
現在、静的メソッドと変数を使用していますが、これはカプセル化を破ります。
アプリのどこからでもエントリ ポイント オブジェクトを参照できるのだろうか? たとえば、ステージのように、グローバルオブジェクトに割り当てられている可能性がありますか?
現在、静的メソッドと変数を使用していますが、これはカプセル化を破ります。
someObject
が表示リストにある場合は、someObject.root
探している参照があります。someObject
表示リストから削除すると、その参照が失われます。
私の答えはノーです。エントリ オブジェクトに直接アクセスする方法はありません。存在すべきではありません。それがカプセル化の目的です。何かにグローバルにアクセスすることは、ほとんど AS1 の方法です。MainClass を暗黙的に参照してメイン インスタンスにアクセスすると、アプリケーションの一部が密結合されますが、これは一般的に悪いことです。
ただし、それが必要な場合は、いくつかのオプションから選択できます。
MainClass.instance
MainClass.getInstance()
私なら後者を選びます。
package com.smth.application
{
public var mainObject:MainClass;
}
// in main app
package com.smth.application
{
public function MainClass()
{
mainObject = this;
}
}
静的アクセスに多少似ているように見えるかもしれませんが、このようにすると、コードにある程度の柔軟性が保持されると思います。
stage
アプリケーションのトップレベルへの参照です。これは、表示ツリー上にある任意の表示オブジェクトを介してアクセスできますmyDisplayObject.stage
。stage
カスタムドキュメントクラスを使用する場合、Bakapiiが言うように、手動で他の何かを0インデックスに強制しない限り、それはの最初の子(インデックス0)になります。