私のコードは、import .asコマンドを介して含まれる他のFlashコンテンツに含まれる可能性があり、シングルトンとして参照されるというシナリオを扱っています。外部swfsでのシングルトンの管理
import com.as3.Singleton;
...
...
Singleton.birth();
Singleton.getInstance().test();
...実行時ライブラリとしてもインポートされます。 Singletonクラスは事前に.swfとしてエクスポートされています(クラスの事前ベーキングの代わりに)。
Event.COMPLETEがswfを呼び出すローダーから一旦消滅したら、どのようにシングルトンを参照すればよいですか?通常、私のようなものコーディングしたい:
public function singletonCompleteHandler(event:Event):void {
var mySing:Singleton = _loader.contentLoaderInfo.content as Singleton;
}
を...しかし、私は、「VAR」の参照を経由してシングルトンを参照されたくない知っています。私は非常にうまく説明していませんが、基本的にsingleton.swfがロードされたら、シングルトンモデル内でコードを使用する必要があります(つまり、アプリケーション全体で1つのインスタンスしかないことを保証します)。
以下に含まれるシングルトンクラスのコピー(これについてのご意見ありがとうございます)。
package
{
public class Singleton extends Sprite
{
private static var instance:Singleton;
public function Singleton() {
if (instance) {
throw new Error("Singleton can only be accessed through Singleton.getInstance()");
}
}
public static function birth() {
if (instance == null) {
instance = new Singleton();
}
}
public static function getInstance():Singleton {
return instance;
}
public function test():void {
trace("Testing our singleton.");
}
}
}
グローバル変数がAS3から削除されたと思いましたか?代わりに静的な参照になっていますか? –
また、上記の結果は次のようなコンパイル時エラーとなります。1118:静的型オブジェクトを持つ値の、無関係型への暗黙の強制変換クラス –
@happyspud答えにgloabl varの例を追加しました。また、そのエラーを修正した、オブジェクトを入力する必要があります、ごめんなさい。 –