2009-07-31 8 views

답변

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을 저장하는 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 리스너를 설정하여 repo 함수를 트리거합니다. 익명 객체를 사용하지 않아도 다시 당신이 한 단계 더 상위 수준 "요청 발행"클래스가 인터페이스를 준수 할 수 걸릴 경우 위임

public function dataLoaded(event:Event):void { 

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

    onLoadDelegate.customLoaderComplete(url, data); 

} 

에 RTS는/기본 클래스를 확장합니다.

관련 문제