2011-03-17 2 views
1

URL로 보내려는 메시지 큐가 있는데 그 큐에서 메시지를 제거하고 싶습니다. 그들이 성공적으로 보내 졌음을 확신합니다. 이렇게하려면 이벤트에서 URLLoader에 대한 정확한 정보를 알아야 큐에서 정확한 메시지를 제거 할 수 있습니다.AS3의 URLLoader에 대한 Complete Event 핸들러에서 URLRequest의 데이터를 얻는 방법

내가 이런 식으로하면.

var urlRequest:URLRequest = new URLRequest(targetUrl); 
var urlLoader:URLLoader = new URLLoader(); 
urlLoader.dataFormat = URLLoaderDataFormat.TEXT; 
urlRequest.data = "test"; 

urlRequest.method = URLRequestMethod.POST; 
urlLoader.addEventListener(Event.COMPLETE, handleComplete); 
urlLoader.load(urlRequest); 

그리고는 내 handleComplete 기능은 다음과 같이이다 :

public function handleComplete(e:Event):void{ 

    //How do I trace the urlRequest.data for this event, whats below does not work. 
    //Because the target of the event is the URLLoader, not the URLRequest. 

    trace(e.target.data); 
} 
+0

당신이 PHP 스크립트에이를 보내는 다음은이의 예입니다? 원인은 그 때 대답을 안다. – SimplyZ

+0

그것은 서버 측 스크립트 일 것이지만, 아마도 진주 일 것이지만, PHP 역시 작동 할 것입니다. – Alex

+0

trace (urlLoader.data); –

답변

1

가 단순히 자신의 커스텀 URLRequest 객체를 저장 URLLoader 클래스를 만들 수 URLRequest 객체를 얻는 방법의 질문에 대답하기 위해.

CustomURLLoader.as :

package 
{ 
    import flash.net.URLLoader; 
    import flash.net.URLRequest; 

    public class CustomURLLoader extends URLLoader 
    { 
     private var _urlRequest:URLRequest; 

     public function get urlRequest():URLRequest 
     { 
      return _urlRequest; 

     }// end function 

     public function CustomURLLoader(urlRequest:URLRequest) 
     { 
      super(urlRequest); 
      _urlRequest = urlRequest; 

     }// end function 

    }// end class 

}// end package 

Main.as (문서 클래스) :

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.net.URLRequest; 
    import flash.net.URLRequestMethod; 

    public class Main extends Sprite 
    { 
     public function Main() 
     { 
      if(stage) init() 
      else addEventListener(Event.ADDED_TO_STAGE, init); 

     }// end function 

     public function init(e:Event = null):void 
     { 
      var urlRequest:URLRequest = new URLRequest("file.php"); 
      urlRequest.data = "test"; 
      urlRequest.method = URLRequestMethod.POST; 
      var customURLLoader:CustomURLLoader = new CustomURLLoader(urlRequest); 
      customURLLoader.addEventListener(Event.COMPLETE, onCustomURLLoaderComplete); 

     }// end function 

     private function onCustomURLLoaderComplete(e:Event):void 
     { 
      var customURLLoader:CustomURLLoader = e.target as CustomURLLoader; 
      trace(customURLLoader.urlRequest.data); // output: test 

     }// end function 

    }// end class 

}// end package 
+0

신난다. 이것은 완전히 이해가 가며 작동해야하는 것처럼 보인다. 나는 내일 첫번째 일을 시도 할 것이다 :). 감사! – Alex

+0

@Alex 도움이되기를 바랍니다. 그렇다면이 질문에 대한 대답으로 받아 들여야합니다. – Taurayi

+0

시도해 보니 매력적이었습니다 :) 감사합니다. 답변으로 표시했습니다. – Alex

관련 문제