I'm working with as3 and I don't understand how to pass from a value on a function to a global variable. I have this code (in a .as file):
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;
}
}
}
What I'm doing with this code is to load several variables which are in a .txt file.
and in the .fla file I have:
import loadInfo;
var dat:loadInfo = new loadInfo();
trace(dat.getTeamA());
but the result is "null". So, I have no clue what to do. Help is appreciated. Thanks.
The problem is that you don't wait for the loader to complete. It takes time to load that txt file and if you call getTeamA
immediately, the loader isn't finished. You should do something like this:
var dat:loadInfo = new loadInfo();
dat.addEventListener(Event.COMPLETE, onDataLoaded);
function onDataLoaded(e:Event):void {
trace (dat.getTeamA());
}
And within loaderInfo
:
public function handleComplete( event:Event ):void {
this.teamA = urlLoader.data.teamA;
dispatchEvent(new Event(Event.COMPLETE));
}
Should work properly. Keep in mind that loaderInfo
must extend EventDispatcher (class loaderInfo extends EventDispatcher {
)..