2009-07-31 15 views
3

URLLoaderオブジェクトからURLを取得する簡単/良い方法はありますか?それは少なくとも2人の他の人(this guyとこれはthis guy)が同じことを疑問に思っているようです。多分私たちはs.oで答えを得ることができますか?URLLoaderからURLを取得しますか?

+0

myLoader ["url"] = "http:// ...";は動作しませんb/c http://flexblog.faratasystems.com/?p=95 – jedierikb

答えて

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

そして、親クラスはどのようにこのローダークラスに到達しますか? –

1

これは素晴らしいアプローチです。逆のアプローチは、クラスにURLLoaderをラップし、ロードが完了し、どのURLが正常にロードされたかを要求元のクラスに通知する場合は、そこに情報を格納することです。

あなたは、何かのよう

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

にそれにアクセスして、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; 
} 

を委任customLoaderクラスで

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

} 

にコールバックを待ちますリクエスト、URLLoaderなどを作成し、Event.COMPLETEリスナを設定してrepo関数をトリガしますバックデリゲートにRTS

public function dataLoaded(event:Event):void { 

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

    onLoadDelegate.customLoaderComplete(url, data); 

} 

あなたはさらに一歩それを取る場合は、トップレベルの「要求の発行」クラスがインタフェース匿名オブジェクトを使用する必要はありませんので、/基本クラスを拡張するに付着することができます。

関連する問題