0

这是在 Flash Action Script 3 中的 这是我的类,我在类中加载了一个 xml,现在我想在主页中做一些事情,比如在舞台上创建基于 xml 的东西。帮助

我明白为什么它不起作用,当函数被调用时,xml 还没有加载,我只是不知道如何解决这个问题?也许添加一个事件监听器?

package  {  
    public class LoadXMLAdventure {
        var adventureXML: XML;
        var xmlReq:URLRequest;
        var xmlLoader:URLLoader = new URLLoader();
        var _currentRoom:int;

        public function LoadXMLAdventure(xmlFileName:String) {
            xmlReq = new URLRequest(xmlFileName);
            xmlLoader.load(xmlReq);
            xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
        }

        function xmlLoaded(event:Event):void{
            adventureXML = new XML(xmlLoader.data)  
            //trace(    adventureXML.toXMLString()  )
        }

        public function myFunction():void{
            trace(adventureXML.toXMLString()) //this does not work
        }
    }

}

在我的主页上

var game:LoadXMLAdventure = new LoadXMLAdventure("file.xml");
game.myFunction();

更新

我想在主页上调用一个函数,这样我就可以在类中进行一些阶段操作,我得到一个错误未定义的方法

function xmlLoaded(event:Event):void{
            adventureXML = new XML(xmlLoader.data)  
            this.dispatchEvent( new Event("showRoom") );
}

这是在舞台上

stage.addEventListener("showRoom",showRoom);
function showRoom(e:Event):void{
  trace("showroom hello")
} 
4

1 回答 1

0

您可以在 xml 加载完成时调度一个事件,但在您的情况下,您只需要在 xmlLoaded 中调用 myFunction;

import flash.events.EventDispatcher;

public class LoadXMLAdventure extends EventDispatcher{

    public function LoadXMLAdventure(xmlFileName:String) {
        xmlReq = new URLRequest(xmlFileName);
        xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
    }

    public function startLoad():void {
        xmlLoader.load(xmlReq);
    }

    function xmlLoaded(event:Event):void{
        adventureXML = new XML(xmlLoader.data);

        this.dispatchEvent(new Event("LoadXmlComplete"));
    }
}

这里是如何使用

var game:LoadXMLAdventure = new LoadXMLAdventure("file.xml"); 
game.addEventListener("LoadXmlComplete", onComplete);
game.startLoad();

private function onComplete(e:Event):void {
   //do some thing
}
于 2013-10-09T03:27:41.163 回答