AS3.用Loader Complete事件返回一个值



我想做一些函数,返回加载对象。比如:

   var myVar:String;
   myVar = MyFuncs.GetResponse("http://www....");

和GetResponse函数必须返回一些字符串值,例如json类型的文本。我试着. .但我无法理解。

  public function GetResponse(url:String):String{
     var request:URLRequest = new URLRequest(url);
     var loader:URLLoader = new URLLoader();             
     loader.load(request);  
     return loader.data
  }

但是当我返回值时,数据还没有加载。我明白了,我需要添加侦听器,当加载器完成:

loader.addEventListener(Event.COMPLETE, Complete);

但是不能理解,当加载完成时,我如何返回加载的值。因为它是另一个函数。

请帮助,如果有人知道,怎么做:)

请原谅我的英语。

您可以创建一个自定义加载器,并为其设置一个回调函数,当加载器加载完成时,将执行回调函数。下面是一个简单的例子

public class MyLoader extends Loader
{
    public function MyLoader($callBack:Function = null)
    {
        super();
        callBack = $callBack; 
        this.contentLoaderInfo.addEventListener(Event.COMPLETE, Complete);
    }
    private var callBack:Function;
    private var _url:String;
    public function set url(value:String):void {
        if (_url != value) {
            _url = value;
            var request:URLRequest = new URLRequest(_url);
            this.load(request); 
        }
    }
    protected function Complete(event:Event):void {
        var target:Object = event.target;
        if (callBack) {
            callBack.apply(null, [target]);
        }
    }

你可以在A类中这样使用

public function class A {
   public function test():void {
       var loader:MyLoader = new MyLoader(setData);
       loader.url = "assets/pig.jpg";//you asset url
   }
  private function setData(obj:Object):void {
     //the obj type is LoadInfo
  }

}

相关内容

  • 没有找到相关文章

最新更新