1

シングルトンがデリケートな話題であることは知っていますが、それについて、またはこの実装についてどう思うかについては、本当に聞きたくありません。この質問はそれについてではありません。

そのため、インスタンスで静的変数を使用してシングルトンを実装しました。

private static var instance:SomeClass = new SomeClass();

public static function getInstance():SomeClass {
    return instance;
}

SomeClassはライブラリ内のクラスであり、その中に と呼ばれるインスタンスがありますsomeSymbol

なぜか、シングルトンとして使っていると、アクセスしようSomeClassとすると毎回. しかし、通常のインスタンス化で実装すると、エラーは消えます。someSymbolCannot access a property or method of a null object referenceSomeClass

さまざまな方法でアクセスしようとしましsomeSymbolたが、常にエラーが発生します。

someSymbol.rotation = 0;

そしてまた

var aSymbol = getChildByName("someSymbol");
aSymbol.rotation = 0;

そしてまた

trace(someSymbol); // null
trace(this['someSymbol']); // null
trace(SomeClass.instance.someSymbol); // throws error

nullでは、通常のようにクラスをインスタンス化するときではなく、このシングルトン実装を使用するときに取得するのはなぜですか?

編集:

@Marty Wallace の回答のおかげで、シングルトンの実装を変更したところ、動作するようになりました。

したがって、この方法でインスタンスをインスタンス化する代わりに:

private static var instance:SomeClass = new SomeClass();

代わりにgetInstance()、@Marty が行うように、最初に呼び出されたときにインスタンス化します。

カーテンの後ろで何が起こっているのか正確にはわかりませんがSomeClass、ドキュメント クラスが実行される前にインスタンス化するときに、完全にエクスポートされていないようです。

4

1 に答える 1

1

あなたの例は私にとってはうまくいきます:

public class Singleton
{

    private static var _instance:TestClip;


    public static function get instance():TestClip
    {
        if(_instance === null) _instance = new TestClip();
        return _instance;
    }

}

そしてTestClip、インスタンス名を持つ内部 MovieClip がありますinner:

trace(Singleton.instance.inner); // [object MovieClip]

SomeClassこのようにクラスを作ってゲッターを作ったら運がいいのでしょうsomeSymbolか?

public function get someSymbol():MovieClip
{
    return this["someSymbol"];
}
于 2013-06-30T23:40:48.193 に答える