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
}
}