Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   полная очистка сцены (http://www.flasher.ru/forum/showthread.php?t=126060)

freeek 09.06.2009 05:26

полная очистка сцены
 
на сцене есть movieclip, внутри несколько movieclip`ов, а также есть кнопка которая должна очищать всю сцену:
Код AS3:

while(parent.numChildren)
{
parent.removeChildAt(0);
}

код удаляет всё как и должно быть, но в аутпуте пишет:
Код:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
что это значит и как это лечить?

simplenoize 09.06.2009 05:30

Просто код в конце концов натыкается на то, что уже нечего удалять, и ругается на это.
Спросите у него, может ли он что-то ещё удалить (есть ли такой объект), если нет то прекратить опперацию.

freeek 09.06.2009 05:57

я уже всё перепробовал, объекта на сцене всего два. если написать:
Код AS3:

while(parent.numChildren)
{
trace("test");
parent.removeChildAt(0);
}

то в аутпуте будет дважды написанно test и ошибка точно такая же как и была выше, но если написать так:
Код AS3:

parent.removeChildAt(0);
parent.removeChildAt(0);

ошибки нет, может я не так "спрашиваю"?

simplenoize 09.06.2009 06:00

Напишите
Код AS3:

trace(parent.numChildren);

и увидите сколько на самом деле у Вас объектов.
когда объектов будет 0, функция всеравно сделает ещё один цикл.
Ещё одно, если Вы ставите parent на таймлайне, то попадете на stage, и удалите MainTimeline.
В первый кадр на таймлайне:
Код AS3:

trace('объектов на Stage:' + parent.numChildren);
trace('объектов на timeline:' + this.numChildren);
while(this.numChildren){
trace('осталось объектов на timeline:'+this.numChildren);
this.removeChildAt(0);
if(this.numChildren == 0){
        trace('На таймлайне пусто');
}
}


dimarik 09.06.2009 17:06

Цитата:

Сообщение от simplenoize (Сообщение 826890)
когда объектов будет 0, функция всеравно сделает ещё один цикл.

Не сделает.

silin 09.06.2009 17:24

удаляя в цикле parent.removeChildAt(0); легко попадаем на удаление 'себя', после чего у объекта уже нет parent'а - в результате и имеем то, что ты показал

помести в этом parent'е метод удаляющий все детей и вызывай его

footman 09.06.2009 18:23

эммм... как насчет
Код AS3:

this.removeAllChildren()


etc 10.06.2009 17:55

footman, такого метода нет у DisplayObjectContainer.


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

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