2013-11-22 58 views
0

所以我需要從我的文檔(Main.as)類訪問信息。 我試圖通過保存我的Main類的一個靜態實例來簡化它。保存Main - Actionscript 3的靜態實例3

private static var _instance:Main; 
public static function get instance():Main { return _instance; } 

public function Main() { 
    _instance = this; 
} 

然後當我在另一個類中嘗試使用這個時,我得到一個空引用錯誤。

public function InputController():void { 
    main = Main.instance; 
    main.stage.addEventListener(KeyboardEvent.KEY_DOWN, OnKeyPress); 
    main.stage.addEventListener(KeyboardEvent.KEY_UP, OnKeyRelease); 
} 

我在main.stage.addEventListener行上發生錯誤。

+1

舞臺是我的主要嫌疑人。 'trace(main,main.stage)'在函數的第二行。 – Senekis

+0

@JohanLindkvist 1009當然。 – Vesper

+0

我在嘗試時未收到此錯誤。確保您的Main類是文檔類,並在構造器中添加一些跟蹤以查看它們是否已創建。 –

回答

-1

您試圖在不實例化的情況下返回實例。使用下面的代碼首先實例化類。

private static var _instance:Main; 
public static function get instance():Main 
{ 
    if(_instance == null) 
    _instance = new Main(); 
    return _instance; 
} 
+0

不應該工作,因爲這個實例幾乎從未使用過。 OP需要輕鬆引用已存在的Main實例,而不是創建一個新實例。 – Vesper

0

如果你有時間表編碼,你可以從其他地方通過屬性實例化的第一個關鍵幀與_instance=this您的靜態變量(應該是可訪問的,因爲主時間軸是文檔類的一部分),並參考那裏。