Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почем не работает removeChild? (http://www.flasher.ru/forum/showthread.php?t=177325)

humppa 29.03.2012 17: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);



Часовой пояс GMT +4, время: 12:38.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.