Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.06.2009, 05:26
freeek вне форума Посмотреть профиль Отправить личное сообщение для freeek Найти все сообщения от freeek
  № 1  
Ответить с цитированием
freeek

Регистрация: Mar 2009
Сообщений: 11
По умолчанию полная очистка сцены

на сцене есть movieclip, внутри несколько movieclip`ов, а также есть кнопка которая должна очищать всю сцену:
Код AS3:
while(parent.numChildren)
{
parent.removeChildAt(0);
}
код удаляет всё как и должно быть, но в аутпуте пишет:
Код:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
что это значит и как это лечить?

Старый 09.06.2009, 05:30
simplenoize вне форума Посмотреть профиль Отправить личное сообщение для simplenoize Найти все сообщения от simplenoize
  № 2  
Ответить с цитированием
simplenoize
 
Аватар для simplenoize

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


Последний раз редактировалось simplenoize; 09.06.2009 в 05:40.
Старый 09.06.2009, 05:57
freeek вне форума Посмотреть профиль Отправить личное сообщение для freeek Найти все сообщения от freeek
  № 3  
Ответить с цитированием
freeek

Регистрация: Mar 2009
Сообщений: 11
я уже всё перепробовал, объекта на сцене всего два. если написать:
Код AS3:
while(parent.numChildren)
{
trace("test");
parent.removeChildAt(0);
}
то в аутпуте будет дважды написанно test и ошибка точно такая же как и была выше, но если написать так:
Код AS3:
parent.removeChildAt(0);
parent.removeChildAt(0);
ошибки нет, может я не так "спрашиваю"?

Старый 09.06.2009, 06:00
simplenoize вне форума Посмотреть профиль Отправить личное сообщение для simplenoize Найти все сообщения от simplenoize
  № 4  
Ответить с цитированием
simplenoize
 
Аватар для simplenoize

Регистрация: Feb 2009
Сообщений: 28
Напишите
Код 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('На таймлайне пусто');
}
}


Последний раз редактировалось simplenoize; 09.06.2009 в 06:17.
Старый 09.06.2009, 17:06
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от simplenoize Посмотреть сообщение
когда объектов будет 0, функция всеравно сделает ещё один цикл.
Не сделает.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 09.06.2009, 17:24
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
удаляя в цикле parent.removeChildAt(0); легко попадаем на удаление 'себя', после чего у объекта уже нет parent'а - в результате и имеем то, что ты показал

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

Старый 09.06.2009, 18:23
footman вне форума Посмотреть профиль Отправить личное сообщение для footman Найти все сообщения от footman
  № 7  
Ответить с цитированием
footman

Регистрация: Mar 2009
Сообщений: 42
эммм... как насчет
Код AS3:
this.removeAllChildren()

Старый 10.06.2009, 17:55
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
footman, такого метода нет у DisplayObjectContainer.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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