Flash耗时较长的方法执行完之后再执行另一个方法 as3.0

floorData.as

function loadFloorXML()
  {
   //读取用户文件夹xml信息
   var urlLoader:URLLoader = new URLLoader(new URLRequest("111.xml"));
   
   urlLoader.addEventListener("complete", readComplete);
   urlLoader.addEventListener("ioError", ioErrorHandler);
  }
  //读取xml房间信息
  function readComplete(event:Event)
  {
   //释放
   event.target.removeEventListener("complete", readComplete);
   event.target.removeEventListener("ioError", ioErrorHandler);
   
   var xml:XML = XML(event.target.data);
   if (xml==null || xml=="")
   {
    mFloorMC.addChild(Globalvariables.DrawAlert("没有房间信息"));
   }
   else
   {
    if (xml.img != null)//判断是否有房间信息
    {
     var mAllFloorData:XMLList = xml.img; //所有的楼层数据
     var floorData:Array = new Array();   
     for (var m:int = 0; m < mAllFloorData.length(); m++)
     {
      floorData.push(mAllFloorData[m]);
     }
     //把读取出来的信息按照楼层号 房间号 以及 图片ID排序(升序排列)
     floorData.sortOn(["@fcode", "@rcode","@id"], Array.NUMERIC ); //
     //for (var j:int = 0; j < floorData.length; j++ )
     //{
     // trace(floorData[j].@fcode+"   " +floorData[j].@rcode+"   "+floorData[j].@id+"   "+ floorData[j].@src);
     //}
     //循环创建5个楼层信息
     for (var i:int = 0 ; i < 5; i++)
     {
      var eachFloorData:EachFloorData =  new EachFloorData();
      //换算出数组元素下标对应的楼层号
      //下标为0,1,2,3,4,5  楼层号应为-2,-1,1,2,3(确定好的)
      //当i=2,3,4的时候楼层号等于i-1,当i=0,1的时候楼层号等于i-2
      eachFloorData.mFloorCode= i >= 2?i - 1 : i - 2;
      this.mEachFloorData.push(eachFloorData);
     }
     var currentRoomCode:int = -1;  //当前房间code
     var roomData:RoomData; 
     for (var j:int = 0; j < floorData.length; j++)
     {
      //换算出楼层号对应的数组元素下标
      //大于等于1层的,下标为楼层号+1
      //-2 -1层的,下标为楼层号+2
      var index:int = floorData[j].@fcode;
      index = index >= 1?index + 1 : index + 2;
      //循环判断当code!=当前房间code的时候实例化roomData类,当前楼层添加房间信息
      //避免多个房间有n张图片信息的时候房间保存重复
      if (floorData[j].@rcode != currentRoomCode)
      {
       currentRoomCode = floorData[j].@rcode ;
       roomData = new RoomData();
       roomData.mRoomCode = currentRoomCode;
       mEachFloorData[index].addRoomData(roomData);
       
      }
      //添加房间id和房间图片信息
      roomData.addRoomImage(floorData[j].@id, floorData[j].@src);
      
     }
    }
    
   }
   this.dispatchEvent(new Event("XMLReadOver"));//主要语句
  }

FloorObject.as

var floorData:FloorData=new FloorData();

floorData.loadFloorXML();

floorData..addEventListener("XMLReadOver", readComplete);  //主要语句

function readComplete(event:Event)
  {
     trace(floorData.mEachFloorData.length);
  }

你可能感兴趣的:(Flash耗时较长的方法执行完之后再执行另一个方法 as3.0)