0

我目前创建了一个类,可用于访问我在 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);
        }

    }
4

1 回答 1

0

首先,您需要为变量定义“访问修饰符”。IE

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

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

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

于 2013-05-02T03:14:33.207 回答