【问题标题】:Trouble With ActionScript Loader EventsActionScript 加载程序事件的问题
【发布时间】:2009-08-26 19:39:46
【问题描述】:

我正在使用加载程序从 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');
} 

【问题讨论】:

    标签: actionscript-3 loader wms


    【解决方案1】:

    您可以考虑的一种可能性是将您的 Loader 转换为 URLLoader,以便您更灵活地查看实际请求/接收的数据。

    display.Loader 类有一些奇怪的怪癖,如果它试图加载一个没有正确入口类的对象(通常是从 display.Sprite 派生的类),它根本不允许触发某些事件。

    我认为 URLLoader 将是有益的,因为您可以将 URLLoaderDataFormat 设置为 BINARY。这将捕获返回的任何内容并将其存储在 ByteArray 对象中,如果它是有效图像,您可以通过 Loader.loadBytes() 将其加载到 display.Loader 中,或者简单地转换 URLLoaderData.toString() 以检索您的 XML信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多