2011-01-10 110 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