アプリの他のクラスからエントリポイントクラスオブジェクトにアクセスする方法はありますか?
-
26-10-2019 - |
質問
アプリ内の場所からエントリポイントオブジェクトを参照できるのだろうか?たとえば、ステージのように、いくつかのグローバルオブジェクトに割り当てられていますか?
現在、静的メソッドと変数を使用していますが、これによりカプセル化が破損しています。
解決
もしも someObject
ディスプレイリストにあります someObject.root
あなたが探しているものであるリファレンス。削除した場合 someObject
ディスプレイリストから、その参照を失います。
私の答えはノーです、エントリオブジェクトにアクセスする直接的な方法はありません、そして、それはあるべきではありません:それがcapsめなことです。世界的に何かにアクセスすることは、ほとんど1の方法です。 MainClassを暗黙的に参照してメインインスタンスにアクセスすると、アプリケーションの一部がしっかりと結合されます。これは一般的に悪いことです。
ただし、必要な場合は、いくつかのオプションから選択できます。
- 静的varを使用します:
MainClass.instance
- Singletoneのようなアクセスを使用してください
MainClass.getInstance()
- パッケージレベルの変数またはパッケージレベルのゲッターメソッドを作成する
後者を選びます。
package com.smth.application
{
public var mainObject:MainClass;
}
// in main app
package com.smth.application
{
public function MainClass()
{
mainObject = this;
}
}
静的なACCEには多少似ているかもしれませんが、このようにしてあなたのコードはある程度の柔軟性を維持すると思います。
他のヒント
stage
アプリケーションの最上位レベルへの参照であり、表示ツリーにあるディスプレイオブジェクトを使用してアクセスできます。 myDisplayObject.stage
. 。カスタムドキュメントクラスを使用する場合、それは最初の子供(インデックス0)になります stage
, 、Bakapiiが言うように、何か他のものを0インデックスに手動で強制しない限り。
所属していません StackOverflow