2009-07-31 69 views
3

有从URLLoader对象获得URL的简单/好方法吗?似乎至少有两个人(this guy和这this guy)想知道同样的事情。也许我们可以在s.o.上找到答案?从URLLoader获取URL?

+0

myLoader [“url”] =“http:// ...”;不起作用b/c http://flexblog.faratasystems.com/?p=95 – jedierikb 2009-07-31 22:16:10

回答

8
package 
{ 

import flash.net.URLLoader; 
import flash.net.URLRequest; 

public dynamic class urlURLLoader extends URLLoader 
{ 

    private var _req:URLRequest; 

    public function urlURLLoader(request:flash.net.URLRequest = null):void 
    { super(request); 
     _req = request; 
    } 

    public override function load(request:flash.net.URLRequest):void 
    { _req = request; 
     super.load(request); 
    } 

    public function get urlRequest():URLRequest 
    { return _req; 
    } 

} 
+0

父类如何接触这个装载器类? – 2011-09-09 15:24:06

1

这是一个不错的方法。相反的方法是将URLLoader包装到类中并将信息存储在那里,如果您希望通知请求的类已完成加载和已成功加载哪个URL。

您将访问它像,

customLoader.url="http://....."; 
customLoader.onLoadDelegate = this; 
customLoader.load(); 

,并在您存储的URL customLoader类等待回调

public function customLoaderComplete(url:String, data:[Object or whatever you set]) { 

} 

并委派

private var url:String; 
private var onLoadDelegate:Object; 

public function set url(_url:String):void { 
    url = _url; 
} 

public function set onLoadDelegate(_onLoadDelegate:Object):void { 
    onLoadDelegate = _onLoadDelegate; 
} 

那么你创建请求,URLLoader等,并设置Event.COMPLETE监听器来触发一个函数回购RTS回委托

public function dataLoaded(event:Event):void { 

    .. parse event.target.data if needed... 

    onLoadDelegate.customLoaderComplete(url, data); 

} 

如果你把它更进一步的顶级“要求发行”类可以坚持的接口/扩展一个基类,这样你就不必使用匿名对象。