从URLLoader获取网址?

时间:2009-07-31 21:41:42

标签: flex flash actionscript-3

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

2 个答案:

答案 0 :(得分: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;
    }

}

答案 1 :(得分:1)

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

您可以访问类似

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

并等待

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

}

在customLoader类中存储url和delegate

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侦听器以触发向委托报告的函数

public function dataLoaded(event:Event):void {

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

    onLoadDelegate.customLoaderComplete(url, data);

}

如果再进一步,顶级“请求发布”类可以遵循接口/扩展基类,因此您不必使用匿名对象。