0

我想做一些功能,返回加载对象。就像是:

   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);

但是无法理解,加载完成后如何返回加载的值。因为它将是另一个功能..

请帮助,如果有人知道,如何:)

对不起我的英语,请。

4

1 回答 1

0

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

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
  }


}
于 2013-06-16T02:50:39.067 回答