2013-05-02 2 views
0

В настоящее время я создал класс, который можно использовать для доступа ко всем моим данным xml в AS3. Проблема, которая у меня была, связана с изменением переменных внутри функции xmlIsLoaded. Когда я отслеживаю переменную xml, она показывает данные xml, но я, когда я ее отслеживал в функции loadPanelData(), получил пустую ссылку. В приведенном ниже коде я экспериментировал с переменной int, и когда я ее протестировал, он проследил начальное значение 0 и не изменился на 2.Невозможно изменить или изменить переменную XML (AS3)

Очевидно, есть кое-что, что я не понимаю, когда дело доходит до того, как xmlIsLoaded но необходимо получить доступ к данным xml (когда я просто выполняю регулярную функцию без прослушивателей, переменная xml пуста и ничего не отслеживает). Надеюсь, у кого-то есть решение, так как я новичок в использовании XML с AS3.

public class XMLLoader extends EventDispatcher 
    { 
     var xml:XML; 
     var productElement:XMLList; 
     var productElementXML:XML; 
     var num:int = 0; 

     public function XMLLoader() 
     { 
      var xmlUrl:URLLoader = new URLLoader(new URLRequest("Project/XMLFiles/PagesXML.xml")); 
      xmlUrl.addEventListener(Event.COMPLETE, xmlIsLoaded); 
     } 

     private function xmlIsLoaded(e:Event) 
     { 
      xml = new XML(e.target.data); 
      num = 2; 
      //trace("this is the xml starting point" + xml.pages + "this is the xml in the class"); 

      dispatchEvent(new Event(Event.COMPLETE)); 
     } 

     public function loadPanelData() 
     { 
      trace("product element test" + num); 
     } 

    } 

ответ

0

Во-первых, вам необходимо определить «access modifiers» вашим переменным. т.е.

public var xml:XML; 
public var productElement:XMLList; 
public var productElementXML:XML; 
public var num:int = 0; 

Во-вторых, когда вы называете метод loadPanelData()? Вы должны вызвать его после выполнения метода xmlIsLoaded.

Либо слушать для этого события Event.COMPLETE путем присоединения EventListener и создание обработчика событий (код не показан?), Чтобы выполнить и следовые значение NUM, или вызвать метод непосредственно в пределах xmlIsLoaded метод.

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