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

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

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

Регистрация: Dec 2010
Сообщений: 129
Question Объект вернуть из null

Доброе...
Как правильно поступать в ситуациях, когда объект нужно полностью удалить, а потом вернуть?

Вот так я его удаляю:
Код AS3:
container.removeChild(object_1);
removeChild(container);
object_1=null;
Так его воскрешаю:

Код AS3:
addChild(container);
container.addChild(object_1);
Выдает ошибку при повторном обращении к объекту:
Код:
ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
	at flash.display::DisplayObjectContainer/removeChild()
	at Document/speedPers()[G:\Document.as:715]
Если не делаю обнуления объекта, то появляется ошибка точно такая же.

Скажите как правильно поступать в таких ситуациях?
Или может его не удалять, а просто скрывать и перемещать?
Забыл сказать, у меня происходит столкновение с объектом.
Спасибо.
__________________
--
Какой бы путь ты не выбрал, лягушка прыгнет врятли

Старый 26.05.2014, 16:14
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 2  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Добавьте эту строку перед удаление и напишите что покажет -
Код AS3:
trace(container.contains(object_1), this.contains(container));
Сорри, написал с ошибкой, исправил.

Старый 26.05.2014, 16:16
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Занулять DO необязательно. Хотя смотря какя ситуация, если у вас их 1000 чи, тогда можно и нульнуть.

Код AS3:
container.removeChild(object_1);
removeChild(container);
object_1=null;
 
object_1= new Object_1()
addChild(container);
container.addChild(object_1);
Непонятно только зачем удалять контейнер ( и вообще создавать ) если в нем только 1 элемент и видимо тоже DO
__________________
Марк Tween

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

Регистрация: Dec 2010
Сообщений: 129
элемент не один, в нем много элементов, просто привел с одним для простоты...

Добавлено через 30 секунд
Сейчас попробую все варианты...
Спасибо...

Добавлено через 20 минут
Цитата:
Сообщение от LifeIsRhythm Посмотреть сообщение
Добавьте эту строку перед удаление и напишите что покажет -
Код AS3:
trace(container.contains(object_1), this.contains(container));

Выводит
Код:
true true
__________________
--
Какой бы путь ты не выбрал, лягушка прыгнет врятли


Последний раз редактировалось firefedot; 26.05.2014 в 17:26.
Старый 26.05.2014, 17:30
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 5  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Чтобы не гадать и не предполагать, выложите весь код относящийся к ошибке.
Вы удаляете, возможно, уже удаленый объект, дело может быть в цикле или ещё в чем-то.

Старый 26.05.2014, 17:41
firefedot вне форума Посмотреть профиль Отправить личное сообщение для firefedot Найти все сообщения от firefedot
  № 6  
Ответить с цитированием
firefedot
 
Аватар для firefedot

Регистрация: Dec 2010
Сообщений: 129
нет, когда я удаляю в первый раз все отлично, а когда его заново создаю, вы ходит ошибка.
Как раз и показал код, где ошибка

Добавлено через 3 минуты
Цитата:
Сообщение от in4core Посмотреть сообщение
Код AS3:
container.removeChild(object_1);
removeChild(container);
object_1=null;
 
object_1= new Object_1()
addChild(container);
container.addChild(object_1);
Спасибо, помогло решить вопрос.
__________________
--
Какой бы путь ты не выбрал, лягушка прыгнет врятли

Старый 26.05.2014, 22:19
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от LifeIsRhythm Посмотреть сообщение
Добавьте эту строку перед удаление и напишите что покажет -
Код AS3:
trace(container.contains(object_1), this.contains(container));
Сорри, написал с ошибкой, исправил.
Эта конструкция ничего не даст. contains по умолчанию проведет рекурсивную проверку. Поэтому даже если объект содержится внутри дочернего контейнера, а не в самом контейнере к которому происходит доступ через this, то this.contains(someObject) все равно покажет true.
Более надежная проверка такая
Код AS3:
if (someObj.parent == container) {
   trace(container, "содержит в себе объект", someObj);
}
ну или отключение рекурсии в методе contains
__________________
Ко мне можно и нужно обращаться на ты)

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

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

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


 


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


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