2013-05-31 3 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

Какая линия номер ошибка происходит на? Исключение нулевого указателя на самом деле здесь не имеет смысла. Объекты в коде, который вы указали, который может быть пустым, - это «stage» и «seleccion». Но вы говорите, что у них всегда есть ценности, и что дает? Пожалуйста, покажите больше кода или, по крайней мере, сообщите нам, в какой строке происходит ошибка. –

+0

Подумав об этом чуть больше, единственное, что действительно может быть нулевым (в коде, который вы показали), - это «этап». Причина в том, что если 'seleccion' был пустым, код в' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' Я много лет работал с 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_ –

Смежные вопросы