从AS3中的类中的函数传递变量值

时间:2014-06-12 08:09:04

标签: actionscript-3 flash flash-cs6

我正在使用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”。 所以,我不知道该怎么做。感谢帮助。感谢。

1 个答案:

答案 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 {)..