2009-08-26 4 views
0

로더를 사용하여 WMS (웹 매핑 서비스)에서 이미지를 요청하고 있습니다. 모든 것은 유효한 요청으로 훌륭하고 멋쟁이입니다.ActionScript 로더 이벤트 관련 문제

WMS에 잘못된 요청이있는 경우 일반적으로 표준 예외 문서 (XML)가 반환됩니다. 그러나 잘못된 요청이 이루어지면 로더는 이벤트 (특히 Complete 또는 IOError 이벤트)를 발생시키지 않습니다.

아무에게도 반환 될 수있는 이미지가 아닌 것을 잡아낼 수있는 방법에 대한 제안이 있습니까? 어떤 데이터가 실제로 요구되는보고를 통해 더 많은 유연성을 제공 당신이하는은 URLLoader에 로더를 변환됩니다에 볼 수 있었다

override protected function loadMapImage(loader:Loader):void 
{ 
// update parameter values 
_params = new URLVariables(); 
_params.request = "GetMap"; 
_params.format = "image/png"; 
_params.version = "1.1.1"; 
_params.layers = this.layers; 
_params.styles = ""; 
_params.transparent = "TRUE"; 
_params.bbox = map.extent.xmin + "," + map.extent.ymin + "," + map.extent.xmax + "," + map.extent.ymax; 
_params.srs = "EPSG:" + map.spatialReference.wkid; 
_params.width = map.width; 
_params.height = map.height; 

_urlRequest = new URLRequest(this.url); 
_urlRequest.data = _params; 

configureListeners(loader.contentLoaderInfo); 

loader.load(_urlRequest); 
} 

private function configureListeners(dispatcher:IEventDispatcher):void 
{ 
//dispatcher.addEventListener(Event.INIT, initHandler); 
//dispatcher.addEventListener(Event.UNLOAD, unloadHandler); 
dispatcher.addEventListener(Event.COMPLETE, completeHandler); 
//dispatcher.addEventListener(Event.OPEN, openHandler); 
//dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
//dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
//dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
//dispatcher.addEventListener(Event.ACTIVATE, activateHandler); 
//dispatcher.addEventListener(Event.DEACTIVATE, deactivateHandler); 
} 

private function ioErrorHandler(event:IOErrorEvent):void 
{ 
trace('ioErrorHandler event'); 
} 

private function completeHandler(event:Event):void 
{ 
trace('completeHandler event'); 
} 

답변

1

하나의 가능성/받았다.

display.Loader 클래스에는 적절한 항목 클래스 (일반적으로 display.Sprite에서 파생 된 클래스)가없는 객체를로드하려고 시도하면 특정 이벤트가 발생하지 않도록하는 이상한 단점이 있습니다.

URLLoader가 유용 할 것으로 생각합니다. URLLoaderDataFormat을 BINARY로 설정할 수 있기 때문입니다. 이것은 반환 된 것을 잡아서 ByteArray 객체에 저장합니다.이 객체는 유효한 이미지 인 경우 Loader.loadBytes()를 통해 display.Loader에로드하거나 XML을 검색하기 위해 URLLoaderData.toString()을 변환 할 수 있습니다. 정보.

+0

이것은 완벽하게 도움이되었습니다. – user163757