我正在使用as3,我不明白如何将函数的值传递给全局变量。我有这个代码(在.as文件中):
package {
public class loadInfo {
import flash.events.*;
import flash.net.*;
private var teamA:String;
public var urlLoader:URLLoader = new URLLoader( );
public function loadInfo() {
urlLoader.addEventListener(Event.COMPLETE, handleComplete);
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlLoader.load(new URLRequest("data.txt" ));
}
public function handleComplete( event:Event ):void {
this.teamA = urlLoader.data.teamA;
}
public function getTeamA():String{
return teamA;
}
}
}
我正在使用此代码执行的操作是加载.txt文件中的多个变量。
在.fla文件中我有:
import loadInfo;
var dat:loadInfo = new loadInfo();
trace(dat.getTeamA());
但结果为“null”。 所以,我不知道该怎么做。感谢帮助。感谢。
答案 0 :(得分:1)
问题在于您不必等待加载程序完成。加载该txt文件需要时间,如果立即调用getTeamA
,则加载器未完成。你应该这样做:
var dat:loadInfo = new loadInfo();
dat.addEventListener(Event.COMPLETE, onDataLoaded);
function onDataLoaded(e:Event):void {
trace (dat.getTeamA());
}
在loaderInfo
内:
public function handleComplete( event:Event ):void {
this.teamA = urlLoader.data.teamA;
dispatchEvent(new Event(Event.COMPLETE));
}
应该正常工作。请注意,loaderInfo
必须扩展EventDispatcher(class loaderInfo extends EventDispatcher {
)..