Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3。返回带有加载程序完成事件的值_Actionscript 3_Loader_Urlloader - Fatal编程技术网

Actionscript 3 AS3。返回带有加载程序完成事件的值

Actionscript 3 AS3。返回带有加载程序完成事件的值,actionscript-3,loader,urlloader,Actionscript 3,Loader,Urlloader,我想做一些函数,返回加载对象。 比如: var myVar:String; myVar = MyFuncs.GetResponse("http://www...."); GetResponse函数必须返回一些字符串值,例如类似json的文本。 我试着。。但不能低估 public function GetResponse(url:String):String{ var request:URLRequest = new URLRequest(url); var

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

   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
  }


}