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

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

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

Регистрация: Apr 2013
Сообщений: 82
По умолчанию Удаление всех объектов массива

Допустим есть код, который что-то создаёт. То что он создаёт, он добавляет в массив. И объекты, которые в массиве появляются на экране. Но во время выполнения кода понадобилось, что бы все объекты массива были удалены. И таких массивов много. Есть простой способ удалить их объекты с поля всех сразу? Или нужно прибегать к помощи циклов и удалять по одному?

Старый 11.08.2013, 01:05
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 2  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Если Вам нужно удалить все обьекты, то нужно сначала удалить все ссылки на них ( то есть удалить их в вашем примере из массива, а потом самую главную ссылку\переменную занулить ).
Если вам нужно за раз очистить весь массив, то его тоже можно занулить.
Код AS3:
array = null;
 
array.length = 0;//или вот так не удаляя массив просто удалить все в нем

Старый 11.08.2013, 01:54
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 3  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Речь то, судя по "удалить их объекты с поля", о дисплейных объектах, которым нет дела до ссылок на них в каком-то там массиве. Ну занулите вы массив — дисплейные объекты то никуда не денутся.
__________________
Reality.getBounds(this);

Старый 11.08.2013, 02:19
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 4  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Не денутся.. Можно уточнить,
Цитата:
которым нет дела до ссылок на них в каком-то там массиве
дисплей обжектам ссылки в массиве не помешают удалиться?
Код AS3:
var container:Sprite = new Sprite();
$doc.addChild(container);
var array:Array = [];
var sp:Sprite
var spX:int = 0;
var spY:int = 0;
for (var i:int = 0 ; i < 10 ; i++)
{
	sp = new Sprite();
	sp.graphics.beginFill(0xFC1D55);
	sp.graphics.drawCircle(spX, spY, 50);
	sp.graphics.endFill();
	array[i] = sp;
	container.addChild(array[i] as DisplayObject);
	spX += 50;
}
while (container.numChildren)
{
	container.removeChildAt(0)
}
//или сразу всех container.removeChildren();

Старый 11.08.2013, 02:28
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
дисплей обжектам ссылки в массиве не помешают удалиться?
Откуда удалиться? Со сцены? Нет)))
__________________
Reality.getBounds(this);

Старый 11.08.2013, 02:31
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 6  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Откуда удалиться? Со сцены? Нет)))
Представление которое удалилось из DOC будет собрано GC, если массив хранит на него ссылку?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Нет конечно.
__________________
Reality.getBounds(this);

Старый 11.08.2013, 02:37
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 8  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Нет конечно.
Тогда эти слова адресуются автору. Ещё и нулюйте)

Старый 11.08.2013, 02:44
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Если все объекты лежат в одном контейнере и надо очистить ВЕСЬ контейнер, то делаем removeChildren().
Если при этом надо еще и удалить объекты из памяти, то еще и зануляем массив.
Если нужно очистить НЕ весь контейнер, или объекты массива разбросаны по разным контейнерам, пробегаемся по массиву циклом, выдергивая каждый объект из его парента, а затем зануляем массив.
__________________
Reality.getBounds(this);

Старый 11.08.2013, 11:39
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 10  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
И с чего Вы взяли, что DisplayObject, который добавлен на сцену, должен быть собран и удален GC?

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

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

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


 


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


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