关于监听函数,请大家帮下忙
刚学AS3.0,很多地方不会,请大家帮下,在时间轴上写下:
import flash.net.*;
var _xname:String;
var _yname:String;
var myloader:URLLoader=new URLLoader();
myloader.dataFormat=URLLoaderDataFormat.VARIABLES;
myloader.addEventListener(Event.COMPLETE, handleComplete);
myloader.load(new URLRequest("xxxx.txt"));
function handleComplete(event:Event):void {
//将event target 转换为URLLoader
var loader2:URLLoader = URLLoader( event.target );
_xname = loader2.data.xname;
trace(_xname);
_yname = loader2.data.yname;
trace(_yname);
}
trace("this is trace "+_xname);
trace("this is trace "+_yname);
测试得出结果为:
this is trace null
this is trace null
123
124
为什么不应该是
this is trace 123
this is trace 124
123
124
或
this is trace 123
this is trace 124
123
124
还有,为什么trace会在监听函数执行之前显示呢?是因为它执行快吗?监听函数里的_xname与外部的_xname是同一个变量吗?还是一个值传递?
谢谢大家!!!!
[解决办法]
flash 事件机制为异步调用 侦听的function只是作为该事件的回调函数,所以不会在代码执行中执行,所以:
第一次的trace是你最后那两句。
第二次的trace是回调函数中的。
[解决办法]
handleComplete待URLRequest请求返回后执行并不会同步等待