Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Удаление элемента массива по имени. (http://www.flasher.ru/forum/showthread.php?t=157163)

HorusWM 01.06.2011 14:34

Удаление элемента массива по имени.
 
Доброго дня, столкнулся с небольшой задачкой и никак не могу ее решить.
У меня массив info_list, который содержит ссылки на клипы. Каждый клип имеет уникальное имя. В определенные моменты я удаляю определенные клипы (с этим проблем нет через перебор for), но вот как мне найти нужную ссылку на клип в массиве, что бы удалить ее? Ведь индекс удаляемого клипа не известен, только его имя, соответственно ни splice, ни shift, ни pop не работают. А так массив постоянно заполняется, когда я создаю новые клипы и фпс заметно падает. Пробовал через перебор For и сравнение имени у ссылки на клип с передаваемым, а затем info_list.splice(0, 1, info_list[temp]) - не работает, удаляется только ссылка на 1й клип, а я могу удалять сразу несколько, пробовал просто info_list.splice(info_list[temp], 1) - так вообще абы какие клипы удаляются.
Пожалуйста, подскажите кто-нибудь.

dark256 01.06.2011 14:47

в удаляемый клип, при его создании, записывайте ссылку на элемент массива.

мой_клип.ссылка = номер_элемента_массива

Перед удалением клипа - удаляйте элемент по ссылке.
К примеру.

HorusWM 01.06.2011 14:52

Благодарю за отклик, можно было сделать так, но нашел другой выход) Весь вечер вчера голову ломал, сразу не дошло: перебор делать через цикл for (i=0.. и далее сравнивать имя искомого индекса, а я перебирал только по самим ссылка в массиве. Задача решена, но всеравно спасибо, dark.

dark256 01.06.2011 14:56

ну в общем да, для индексированных массивов счетный цикл самое то :)
for in имеет смысл применять, если индекс массива - литерал.
Типа имя_массива["Возраст"] = 666
:)

HorusWM 01.06.2011 15:00

Вы имеете ввиду, если в массиве хранятся не ссылки на инстансы, а просто строковые значения?

dark256 01.06.2011 15:09

Нет, если индекс элемента массива выглядит не так:
arr[0]
arr[1]
arr[2]

А так:
arr["Vasia"]
arr["Katia"]
arr["iNills"]

HorusWM 01.06.2011 15:13

но это всеравно могут быть ссылки на инстансы? если да, то как добавлять тогда таким образом индексы, push("Vasya") ?

dark256 01.06.2011 15:17

в самом элементе хранить можно все что угодно.
а push.... я обычно добавляю так:

array[array.length] = очередные_данные_какие-то_любые :)

Добавляется в конец и нормально увеличивается размер.
В вашем случае ничего не надо добавлять, по сути.

arr["Vasia"] = 100500 - это само по себе создаст в массиве элемент с таким индексом :)

HorusWM 01.06.2011 15:20

аа, понял.. это удобно для сортировки потом, но это, получается, подходит только для заполнения вручную? скажем, если эл-тов очень много (ну, скажем, уже больше десятка), то процесс не автоматизировать?

dark256 01.06.2011 16:07

Смотря откуда вы берете данные.
Ну и литерал собссно тоже можно генерить как угодно.
Например из индексов символов собирать строки.


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

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