I was able to get this widget working by tweaking which events are passed to the dynamic layer's addEventListener method. It seems that dynamic layers no longer fire the Event.COMPLETE event, but rather a combination of LayerEvent.LOAD and LayerEvent.UPDATE_END.Here is how I modified this widget to get it working:1) I changed all Event.COMPLETE events to LayerEvent.LOAD2) I added an additional addEventListener method call to capture the LayerEvent.UPDATE_END events in the config method.Here is a snippet from the config method:for each(var oLayer:Layer in oMap.layers)
{
if (oLayer is ArcGISDynamicMapServiceLayer){
var dyn:ArcGISDynamicMapServiceLayer = oLayer as ArcGISDynamicMapServiceLayer;
var cLayer:ArcGISDynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer(dyn.url);
cLayer.id = dyn.id;
cLayer.addEventListener(LayerEvent.LOAD,onLoadDone);
cLayer.addEventListener(LayerEvent.UPDATE_END,onLoadDone);
map.addLayer(cLayer);
} else if (oLayer is ArcGISTiledMapServiceLayer) {
var tLayer:ArcGISTiledMapServiceLayer = oLayer as ArcGISTiledMapServiceLayer;
var cLayer2:ArcGISDynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer(tLayer.url);
cLayer2.id = tLayer.id;
cLayer2.imageFormat = "jpg";
cLayer2.addEventListener(LayerEvent.LOAD,onLoadDone);
cLayer2.addEventListener(LayerEvent.UPDATE_END,onLoadDone);
map.addLayer(cLayer2);
} else if (oLayer is GraphicsLayer) {
/* var gLayer:GraphicsLayer = deepClone(oLayer) as GraphicsLayer;
map.addLayer(gLayer); */
}
}