2013-05-31 55 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_ –