2013-06-30 61 views
1

我知道單身人士是敏感的主題,但我真的不想聽到任何有關此事的信息,或者您對此實現的看法。這個問題不是關於這個問題。AS3單身人士的訪問階段對象返回null

所以,我已經實現了一個使用實例的靜態var的單例。

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

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

SomeClass是在圖書館的一類,而一個有一些實例調用someSymbol內。

由於某些原因,當我使用SomeClass作爲單例時,每次我想要訪問someSymbol時,我都會得到Cannot access a property or method of a null object reference。但是如果我通過常規實例實現SomeClass,錯誤消失。

我試過以不同的方式訪問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華萊士的回答,我改變了我的單身執行情況和現在的作品。

所以,與其實例實例是這樣的:

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

我,而不是實例化它的第一次getInstance()被調用,因爲@Marty做的。

我不確切地知道窗簾背後發生了什麼,但似乎SomeClass在文檔類運行之前實例化時未完全導出。我

+0

這是一個有趣的問題 - 我現在檢查一下。 – Marty

回答

1

你的例子是工作的罰款:

public class Singleton 
{ 

    private static var _instance:TestClip; 


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

} 

而且TestClip有實例名稱inner內的MovieClip:

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

你有運氣,如果你犯了一個類SomeClass併爲這樣的someSymbol做一個getter?

public function get someSymbol():MovieClip 
{ 
    return this["someSymbol"]; 
} 
+0

我編輯了我的問題,請看看。 – Pier

+0

你在用什麼IDE? – Pier

+0

@Pier Flash。我仍然沒有得到你的錯誤。事實上,我從來沒有得到'空',只是未定義。 – Marty