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



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

显然,当涉及到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);
        }
    }

首先,您需要为变量定义"访问修饰符"。例如

public var xml:XML;
public var productElement:XMLList;
public var productElementXML:XML;
public var num:int = 0;
第二,什么时候调用方法loadPanelData()?您应该在xmlIsLoaded方法执行之后调用它。

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

最新更新