2013-05-02 38 views
0

我目前創建了一個類,可以用來訪問AS3中的所有xml數據。我遇到的問題是在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事件(代碼未示出?)來執行和跟蹤NUM的值,或者直接撥打電話內的xmlIsLoaded方法,所述方法。