首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URLLoader如何获取加载的URL?

URLLoader如何获取加载的URL?
EN

Stack Overflow用户
提问于 2011-09-24 02:08:27
回答 2查看 5.1K关注 0票数 1

是否可以使用URLLoader来获取已加载文件的文件名?

代码语言:javascript
复制
public function loadCSS():void {
    var urlLoader:URLLoader = new URLLoader();
    urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
    urlLoader.load(new URLRequest("cssFile1"));
    urlLoader.load(new URLRequest("cssFile2"));
    urlLoader.load(new URLRequest("cssFile3"));
}

private function urlLoader_complete(evt:Event):void {

    // *****How can I get the file name here?
    var css:String = URLLoader(evt.currentTarget).data;
    // Do lots of stuff

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-24 04:15:37

首先,由于load方法是异步的,因此代码中的这三个调用将连续覆盖彼此。将导致分派COMPLETE事件的唯一调用将是最后一个调用。如果您希望异步加载这些文件,则需要为每个文件创建一个URLLoader实例。

其次(还有更多关于您的问题),URLLoader类中没有允许您访问最初调用load()时所使用的URLRequest的属性。

解决这个问题的一个简单方法是扩展URLLoader。例如,如果你只需要url:

代码语言:javascript
复制
public class MyURLLoader extends URLLoader
{
    private var _url:String;

    public function MyURLLoader(request:URLRequest=null)
    {
        super(request);
    }

    override public function load(request:URLRequest):void
    {
        super.load(request);
        _url = request.url;
    }

    public function get url():String
    {
        return _url;
    }
}

然后,在您的代码中,您仍然可以使用单个事件处理程序:

代码语言:javascript
复制
public function loadAllCSS():void {
    loadCSSFile("cssFile1");
    loadCSSFile("cssFile2");
    loadCSSFile("cssFile3");
}

private function loadCSSFile(cssURL:String):void {
    var urlLoader:MyURLLoader = new MyURLLoader();
    urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
    urlLoader.load(new URLRequest(cssURL));
}

private function urlLoader_complete(evt:Event):void {
    var cssURL:String = evt.target.url;  //now I know where this came from
    var css:String = evt.data;
}
票数 5
EN

Stack Overflow用户

发布于 2011-09-24 04:13:41

创建三个URLLoaders。在complete函数中,您可以检查事件目标的身份,以确定从哪个位置获取事件,这将告诉您加载的是哪个文件。您也可以改为使用三个不同的处理程序,这取决于您希望如何分解代码。

文档不清楚当您在同一个URLLoader上多次调用load时会发生什么,这(对我来说)意味着这不是定义良好的行为,您应该避免这种行为。对于您的示例,文档没有指定您的事件处理程序将被调用一次还是三次,如果它被多次调用,那么每次调用的数据是否会不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7533106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档