2013-10-09 25 views
0

這是在Flash動作腳本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(); 

更新

我要撥打的主網頁上的功能,所以我可以做一些階段操作 這是在課堂上,我得到錯誤undefined方法

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

回答

0

加載完成XML時,可以調度事件,但在你的情況,你只需要調用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 
} 
+0

我上this.dispatchEvent錯誤作爲一個未定義的方法,我需要包括些什麼呢? – artSir

+0

是的,你應該導入flash.events.EventDispatcher – Pan

+0

我明白了,我不得不創建一個_dispatcher = new EventDispatcher(); – artSir

相關問題