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

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

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

Регистрация: Jul 2015
Сообщений: 2
По умолчанию Проблемы с removeChild

Я видел очень много тем на этом форуме про эту проблему, но негде не нашел подходящего для меня решения. при использовании removeChild, объект на поле становился невидимым. Если потом присвоить ему значение null, то он окончательно удаляется. НО проблема заключается в том, что у меня нет переменной к которой я могу присвоить это значение.

Есть массив blocks, в котором хранятся все блоки на сцене. нужно очистить его и ПОЛНОСТЬЮ удалить все объекты в нем.

Код AS3:
 
// кусочек кода который добавляет блок на сцену и в массив
for (i2 = 1; i2 <= cx; i2++)
{
	for (i = 1; i <= cy; i++)
	{
		if (BlocksIds[i3] == 1)
		{
			var Box:MovieClip = new box  ;
			addChild(Box);
			Box.x = i2 * d - d + otsx;
			Box.y = i * d - d + otsy;
			blocks.push(Box);
		}
		i3++;
	}
}
//как-то так
То есть я использую одну переменную много раз, и установить значение null для неё не получается. все манипуляции с объектами проходят через массив.
Подскажите как можно полностью удалить каждый объект со сцены

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Со сцены removeChild хватит. А из памяти, если ссылок нет, как у вас - мусорщик соберет.

Добавлено через 1 минуту
И вы не объекту присваиваете null, а ссылке на него.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 10.07.2015, 16:40
RuslanT007 вне форума Посмотреть профиль Отправить личное сообщение для RuslanT007 Найти все сообщения от RuslanT007
  № 3  
Ответить с цитированием
RuslanT007

Регистрация: Jul 2015
Сообщений: 2
Цитата:
Сообщение от GBee Посмотреть сообщение
Со сцены removeChild хватит. А из памяти, если ссылок нет, как у вас - мусорщик соберет.

Добавлено через 1 минуту
И вы не объекту присваиваете null, а ссылке на него.
Что за мусорщик?

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

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Кроме removeChild нужно и из массива blocks удалить ссылку на объект.
__________________
http://www.chessmax.ru

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

Регистрация: Jul 2015
Сообщений: 6
RuslanT007,
Код:
Если потом присвоить ему значение null, то он окончательно удаляется. НО проблема заключается в том, что у меня нет переменной к которой я могу присвоить это значение
Ну как же нет??? А blocks[i]??? =) Просто в цикле перебрать этот массив и присвоить всем эл-там null:
Код:
for(var i:uint = 0; i < blocks.length; i++){
    removeChild(blocks[i]);
    blocks[i] = null;
}

Старый 13.07.2015, 12:56
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 6  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
У вас массив содержит ссылку на объект, по этому удаляйте элемент массива, как написал выше 4e4uK, если хотите безвозвратно удалить, то элементу массива присвойте null и почистите сам массив, что бы не было пустого элемента массива

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

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

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


 


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


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