Flash耗时较长的方法执行完之后再执行另一个方法 as3.0
2013-08-22 17:30
330 查看
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);
}
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);
}
相关文章推荐
- java中等待其他线程执行完成之后,再去执行别的方法
- iOS 注册通知之后多次执行响应方法
- linux往另一个tty输入命令并执行的方法
- C#代码执行耗时计算,此处是监测的mvc控制器方法
- RCP应用程序执行耗时长的方法不影响界面相应的方法
- 执行完一个外部程序之后再执行另一个程序
- 在BroadCastReceiver的onReceive方法中执行耗时操作的正确姿势到底是什么
- Spring-Boot+AOP+统计单次请求方法的执行次数和耗时情况
- VS2008 未找到编译器可执行文件 csc.exe【当网上其他方法试玩了之后不起作用的时候再用这个方法】
- 关于Hibernate save方法执行之后得到的id与数据库中实际存入值的id不一致的问题
- 使用AOP的方式监测方法执行耗时
- 拦截器、执行-拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。-by小雨
- VS2008 未找到编译器可执行文件 csc.exe【当网上其他方法试玩了之后不起作用的时候再用这个方法】
- 安装了Mathtype之后出现“打开对话框命令无法执行”解决方法!
- 你知道的,javascript语言的执行环境是"单线程模式",这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,因此很多时候需要进行“异步模式”,请列举js异步编程的方法。
- spring 初始化之后执行的方法
- CM安装好集群之后在shell命令下执行hive 或者hbase操作遇到权限问题的解决方法
- 在main函数执行之前和执行之后执行的方法
- Spring boot启动之后执行方法 CommandLineRunner
- 在主函数main()之后再执行另外一个函数的方法