2013-05-31 118 views
1

在類中定義一個字典,它需要根據某些應用程序事件重新啓動。如果應用程序窗口具有焦點,那麼好......但如果不是這樣,我得到:來自字典的奇怪行爲

TypeError: Error #1009: Cannot access a property or method of a null object reference.

這是相關代碼:

private var seleccion:Dictionary= new Dictionary(); 

private function myfunction():void{ 
    trace(stage);//it is always [object Stage] 
    if(seleccion){ //always there 
     trace(seleccion);////it is always [object Dictionary] 
     seleccion= new Dictionary();//if have focus, ok. If not i get error #1009 
    } 
} 

我簡化了代碼只留下那有關的問題(我認爲)...任何想法,爲什麼會發生這種情況,以及如何防止它?

+0

哪個行號是發生錯誤?空指針異常在這裏沒有意義。您顯示的代碼中可能爲null的對象是「stage」和「seleccion」。但是你說這些東西總是有價值的,那麼是什麼給了?請顯示更多代碼或至少告訴我們錯誤發生在哪一行。 –

+0

想到這一點之後,唯一真正可以爲null的東西就是'stage'。原因是如果'seleccion'爲空,'if'語句中的代碼將不會被執行。我已經在w/Flash工作了很多年了,如果瀏覽器沒有焦點時'stage'爲null,會感到驚訝。但是誰知道:) –

+0

錯誤出現在下一行:seleccion = new Dictionary(); //如果有焦點,確定。如果沒有我得到錯誤#1009 –

回答

1

如上所述,它似乎更像是一個階段性問題。 嘗試通過像下面這樣的事件ADDED_TO_STAGE初始化您的代碼:

package { 

    import flash.display.Sprite; 
    import flash.events.Event; 

    public class Main extends Sprite { 

     public function Main() { 
      addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event):void { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 
      //your code should start here 
     } 
    } 
} 
+0

舞臺很好,問題出在_seleccion_ –