因AS3中代码是异步执行的,有时候经常会遇到一个函数还没执行完就开始执行下一个函数的问题,比如一个函数执行读取XML数据的操作,暂命名为:XmlInfoReader, 一个函数用来处理XML数据,暂命名为:XmlInfoProcess,在XmlInfoReader这个函数还没完成XML数据读取的时候,函数XmlInfoProcess就开始处理数据,这时就会报错了。
解决方法:
通过引入计时器来解决。
var timer:Timer = new Timer(100,1);
//调用函数XmlInfoReader
timer.addEventListener(TimerEvent.TIMER,timeHandler);
timer.start();
private function timeHandler(e:TimerEvent):void
{
//如果XmlInfoReader执行完毕,则调用XmlInfoProcess函数,否则继续等待
if(XmlInfoProcess执行完毕)
{
//调用函数XmlInfoProcess
timer.removeEventListener(TimerEvent.TIMER,timeHandler);
}
else
{
timer.repeatCount = timer.currentCount+1;
if(timer.repeatCount大于某个值)
{
timer.removeEventListener(TimerEvent.TIMER,timeHandler);
//抛出异常
}
}
}