最近我注意到在2.0 API中,没有更多的LayerEvent。TILES_UPDATED,只是一个LayerEvent。UPDATE_END,这很好。简化了很多。当需要管理层时,也就是说,当它们加载并完成时,如果Flex API可以调度LayerEvent就太好了。当层时UPDATE_END。执行Visible = false。我知道可见层继承自uiccomponent,但是现在如果你想知道那个层。visible被设置为false,则需要监听FlexEvent。躲,不过当层。visible被设置为true,你仍然会得到一个LayerEvent。UPDATE_END事件。这意味着要实时管理可见层,我需要从同一层侦听2个事件来做同样的事情。下面是我目前用来处理这种情况的代码片段。map.addEventListener (MapEvent。LAYER_ADD, map_layerAddHandler)保护var lyrCount:uint; protected var lyrUpdateCount:uint; protected function map_layerAddHandler(event:MapEvent):void { var lyr:Layer = event.layer; lyr.addEventListener(LayerEvent.UPDATE_END, onLayerUpdateEnd_handler); lyr.addEventListener(FlexEvent.HIDE, function(e:Event):void{trace(e)}); lyr.addEventListener(FlexEvent.HIDE, onHide); if (lyr.visible) lyrCount++; } // I need to listen for the Hide event and manually dispatch a LayerEvent // in order to have a proper count of current visible layers protected function onHide(event:FlexEvent):void { if (event.currentTarget is Layer) { event.currentTarget.dispatchEvent(new LayerEvent(LayerEvent.UPDATE_END, event.currentTarget as Layer, null, true, false)); } } protected function onLayerUpdateEnd_handler(event:LayerEvent):void { if (event.updateSuccess) { lyrUpdateCount++; var lyr:Layer var tmpCount:uint = lyrCount; lyrCount = 0; for each (lyr in this.layers) { if (lyr.visible) lyrCount++; } trace("lyrCount",lyrCount); trace("lyrUpdateCount",lyrUpdateCount); trace("tmpCount",tmpCount); if (lyrUpdateCount == lyrCount || lyrCount != tmpCount) { lyrUpdateCount = 0; } } } It's really more of a convenience request, but it'd be nice to have. I figure since you're working on API 2.1, it couldn't hurt to ask. Thanks.
…查看更多