Показать сообщение отдельно
Старый 29.03.2012, 17:27
humppa вне форума Посмотреть профиль Отправить личное сообщение для humppa Найти все сообщения от humppa
  № 1  
Ответить с цитированием
humppa

Регистрация: Dec 2006
Сообщений: 27
По умолчанию Почем не работает removeChild?

Мувиклип(прелоадер) экспортируюется в 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);