If you are using Tiled Service Layers, you'll want to listen on the LayerEvent.TILES_UPDATED event.
If you have more than one layer in your application, you'll want to do a count of when each update completes.
This is code I use to track if layers are loading.
[PHP]
protected var _serviceCount:int = 0;
protected var _currCount:int = 0;
// Cycle through your map.layers property and send each on to
// this method.
protected function mapListeners(layer:Layer):void
{
// Note, visible matters to get a correct count.
if (layer is ArcGISDynamicMapServiceLayer && layer.visible == true)
{
_serviceCount++;
layer.addEventListener(Event.COMPLETE, onServiceIsLoading, false, 0, true);
}
else if (layer is ArcGISTiledMapServiceLayer && layer.visible == true)
{
_serviceCount++;
layer.addEventListener(LayerEvent.TILES_UPDATED, onServiceIsLoading, false, 0, true);
}
}
protected function onServiceIsLoading(event:Event):void
{
_currCount++;
trace("currcount: " + _currCount);
trace("servicecount: " + _serviceCount);
if (_currCount == _serviceCount)
{
isLayerLoading = false; // I bind this to a message of some sort
_currCount = 0;
}
}[/PHP]