Мувиклип(прелоадер) экспортируюется в AS с уникальным именем SmPreload. В процессе подгрузки изображений мы добавляем его на сцену на места изображений.

Код AS3:
private function smgLoad(e:ProgressEvent) { //Отлавливаем загружающиеся картинку, ставим на её место sm_preload
var myUiLoader:UILoader = e.currentTarget as UILoader;
var smPreload = new SmPreload();
smPreload.x = (myUiLoader.x + myUiLoader.width)-25;
smPreload.y = (myUiLoader.y + myUiLoader.height) - 40;
smPreload.name = 'preload_' + myUiLoader.name;
trace('smPreload.name = ', smPreload.name); //smPreload.name = preload_pic6
addChild(smPreload);
}
private function smgComp(e:Event) { //убираем sm_preload по окончанию загрузки
var myUiComp:UILoader = e.currentTarget as UILoader;
var name = 'preload_' + myUiComp.name;
trace('name =', name);
var sm_preload = getChildByName(name);
trace('sm_preload.name = ', sm_preload.name); //sm_preload.name = preload_pic6
removeChild(sm_preload);
}
Скрипт проходит, но все экземпляры SmPreload остались на местах. Никто не удалился. Ежели помимо removeChild(sm_preload); добавить в конце ещё строчку obj.removeChild(obj.getChildByName(name)), удаление происходит. Но ведь это не корректно? Подскажите пожалуйста в чем проблема!
Добавлено через 30 минут
Пардон, сам разобрался

В первой функции нужно было удалить слушатель для ProgressEvent.PROGRESS

Код AS3:
myUiLoader.removeEventListener(ProgressEvent.PROGRESS, smgLoad);
Ну и Event.COMPLETE во второй соответственно:

Код AS3:
myUiComp.removeEventListener(Event.COMPLETE, smgComp);