2011-01-10 161 views
1

我需要用一個loadXML的方法和一個URLLoader對象來處理這條產業鏈:如何處理事件鏈

ResourceLoader.Instance.LoadXML("Config.xml"); 
ResourceLoader.Instance.LoadXML("GraphicsSet.xml"); 

裝載機開始第一frameFunc迭代後加載(爲什麼?)我希望它立刻開始(可選。 )

它開始加載只有 「GraphicsSet.xml」

Loader類的loadXML方法:

public function LoadXML(URL:String):XML 
    { 
     urlLoader.addEventListener(Event.COMPLETE,XmlLoadCompleteListener); 
     urlLoader.load(new URLRequest(URL));     
     return xml; 
    } 
    private function XmlLoadCompleteListener(e:Event):void 
    { 
     var xml:XML = new XML(e.target.data); 
     trace(xml); 
     trace(xml.name()); 
     if(xml.name() == "Config") 
       XMLParser.Instance.GameSetup(xml); 
     else if(xml.name() == "GraphicsSet") 
       XMLParser.Instance.GraphicsPoolSetup(xml); 
    } 

這裏是主:

 public function Main() 
    { 
     Mouse.hide(); 
     this.addChild(Game.Instance); 
     this.addEventListener(Event.ENTER_FRAME,Game.Instance.Loop);    
    } 

而且關於添加Game.Instance在遊戲constuctor呈現隊列我啓動初始化方法:

 public function Game():void 
    { 
     trace("Constructor"); 
     if(_instance) 
      throw new Error("Use Instance Field"); 
     Initialize();   
    } 

其代碼是:

private function Initialize():void 
    { 
     trace("initialization"); 
     ResourceLoader.Instance.LoadXML("Config.xml"); 
     ResourceLoader.Instance.LoadXML("GraphicsSet.xml");    
    } 

謝謝。

回答

1

你的代碼是一個有點混亂,閱讀,因爲你不遵守公認的命名約定爲AS3。

方法&變量的名稱不應該大寫,而駝峯格式:

private function xmlLoadCompleteListener(e:Event):void{} 

其次,爲什麼要使用單身?單身人士的使用相當具有爭議性,請在本網站上進行一些搜索以找出原因。

在你的特殊情況下,你的加載問題來自你使用單例的方式。如果您需要同時加載多個文件,則需要爲每個操作創建一個新的URLLoader實例,否則您只會加載最後一次調用的操作。

private var assets:Array = ['Config.xml' , 'GraphicsSet.xml']; 

    //Load your assets 
    private function loadAssets(value:Array):void 
    { 
     for each (var url:String in value) 
     { 
      var urlLoader:URLLoader = new URLLoader(); 
      urlLoader.addEventListener(Event.COMPLETE, xmlLoadCompleteListener); 
      urlLoader.load(new URLRequest(URL)); 
     } 
    } 
0

因爲我們還沒有提供其中包含LoadXML聲明恰好這兩條線分別位於任何信息,我不能回答,爲什麼他們沒有立即加載部分。

至於其他部分:看起來您正在使用單例實例進行加載。由於你不允許它在第一次加載操作時完成完成,所以第二次加載操作將立即覆蓋第一次加載操作,並且你的程序不會加載所請求的文件。您可以通過使用兩個ResourceLoader實例或在第一個文件加載完成後在XMLLoadCompleteListener中開始第二個操作來解決此問題。

+0

更新的代碼,也許它會幫助 – xdegtyarev 2011-01-10 01:28:22