0

ローダーを使用して、WMS(Webマッピングサービス)に画像をリクエストしています。有効なリクエストがあれば、すべてがうまくいきます。

WMSに対して不正な要求が行われると、通常、標準例外ドキュメント(XML)が返されます。ただし、不正な要求が行われた場合、ローダーはイベント(具体的にはCompleteイベントまたはIOErrorイベント)を発生させません。

返される可能性のある画像ではないものをトラップする方法について誰かが何か提案がありますか?

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');
} 
4

1 に答える 1

1

検討できる可能性の 1 つは、Loader を URLLoader に変換することです。これにより、実際にどのデータが要求/受信されているかをより柔軟に確認できます。

display.Loader クラスには、適切なエントリ クラス (通常は、display.Sprite から派生したクラス) を持たないオブジェクトをロードしようとすると、特定のイベントの発生が許可されない奇妙な癖があります。

URLLoaderDataFormat を BINARY に設定できるので、URLLoader が役立つと思います。これは、返されたものをすべてキャッチし、ByteArray オブジェクトに格納します。これは、有効な画像の場合は Loader.loadBytes() を介して display.Loader にロードするか、単に URLLoaderData.toString() を変換して XML を取得できます。情報。

于 2009-08-27T20:42:21.867 に答える