2009-07-31 68 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); 

} 

如果你把它更進一步的頂級「要求發行」類可以堅持的接口/擴展一個基類,這樣你就不必使用匿名對象。