代码之家  ›  专栏  ›  技术社区  ›  jedierikb grijalvaromero

从urlloader获取url?

  •  3
  • jedierikb grijalvaromero  · 技术社区  · 16 年前

    有没有一个简单/好的方法从 URLLoader 对象?看起来至少还有两个人( this guy 而这 this guy )想知道同样的事情。也许我们可以在S.O.上得到答案?

    2 回复  |  直到 16 年前
        1
  •  8
  •   jedierikb grijalvaromero    16 年前
    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;
        }
    
    }
    
        2
  •  1
  •   Michael    16 年前

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

    你可以像这样访问它,

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

    等待回拨

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

    在CustomLoader类中,存储URL和委托

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

    如果您更进一步,顶级“发出请求”类可以附加到接口/扩展基类,这样您就不必使用匿名对象。