无法更改或访问XML变量(AS3)

时间:2013-05-02 03:06:02

标签: xml actionscript-3

我目前创建了一个可用于访问AS3中所有xml数据的类。我遇到的问题是在xmlIsLoaded函数中更改变量。当我跟踪xml变量时,它显示了xml数据,但是当我在loadPanelData()函数中跟踪它时,我得到了一个空引用。在下面的代码中,我尝试了一个int变量,当我测试它时,它跟踪初始值0并且没有变为2.

显然,当涉及xmlIsLoaded如何工作时,我有一些不理解的东西,但是有必要访问xml数据(当我只做一个没有监听器的常规函数​​时,xml变量是空的并且没有任何痕迹)。希望有人有一个解决方案,因为我不熟悉在AS3中使用XML。

 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);
        }

    }

1 个答案:

答案 0 :(得分:0)

首先,您需要为变量定义“access modifiers”。即。

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

其次,何时调用方法 loadPanelData()?您应该在 xmlIsLoaded 方法执行后调用它。

通过附加eventListener并创建事件处理程序(代码未显示?)来执行和跟踪 num 的值,或者直接调用方法,来监听Event.COMPLETE事件 xmlIsLoaded 方法。