1) Ошибка, которую вы получаете, вероятно, потому, что последняя строка в вашем операторе switch заканчивается точкой с запятой вместо точки с запятой - "default src = trace (resultXML.cc.icon) = 0:"
2) Я никогда не использовал UILoader - обычно я просто использую Loader:
var loader:Loader = new Loader;
var images:Array = [];
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
loader.load(new URLRequest("image url here.jpg"));
protected function completeHandler(e:Event):void {
// you can pull out the loader content and cast it as a bitmap...
images.push(loader.content as Bitmap);
// or you can simply add the loader to the stage
addChild(loader);
clearListeners();
}
protected function errorHandler(e:IOErrorEvent):void {
trace("Error loading image! Here's the error:\n" + e);
clearListeners();
}
protected function progressHandler(e:ProgressEvent):void {
trace("Load is " + (100 * e.bytesLoaded / e.byteTotal) + " percent complete...");
}
protected function clearListeners():void {
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
}
3) Если вы загружаете несколько изображений одновременно, вы должны знать, что порядок, в котором вызываются ваши грузы, НИЧЕГО не имеет с порядком, в котором они завершены. Таким образом, вы не можете предполагать, что, поскольку вы загружаете изображение A, а затем изображение B, изображение A будет первым. Таким образом, вы должны сделать некоторую логику, чтобы отслеживать ваши загрузчики - например, вы можете иметь такую настройку:
var urls:Array = [this array has all of your urls in it];
var loaders:Array = [];
var images:Array = [];
protected function initLoaders():void {
for (var i:int = 0; i < urls.length; i++) {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
// you'll want to add your other handlers here too for IOErrorEvent and Progress.
loader.load(new URLRequest(urls[i]));
loaders[i] = loader;
}
}
protected function completeHandler(e:Event):void {
var loaderIndex:int = loaders.indexOf(e.currentTarget); // this tells you which loader finished
images[loaderIndex] = e.currentTarget.content as Bitmap; // I think this will work, you may have to play with Array syntax to make sure you're not adding tons of empty items and screwing up your order.
if (images.length == urls.length) {
trace("All images loaded!");
}
}
4) Наконец, не используйте фреймы. Вы хотите написать свой код во внешнем классе. Если он должен быть привязан к данному кадру, используйте visible = true или visible = false в зависимости от текущего кадра. Но все это можно и нужно обрабатывать в коде, поскольку это действительно бизнес-логика, и она не должна быть тесно связана с вашим представлением (то есть визуальным отображением, которое можно привязать к кадрам).
Надеюсь, это поможет!