![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2011
Адрес: x=0;у=0; да да, я в 2D))
Сообщений: 17
|
все квадратики находятся в массиве. его длина-144. когда я удаляю квадратики согласно условиям игры, удаляю их и из массива соответственно. в итоге длина массива уменьшается на то количество квадратиков. что было удалено, что логично, но. квадратик с индексом 45 должен же был по идее занять позицию 42, также и квадратик 57 соответственно, должен был бы изменить свою позицию, заняв пустое место в массиве но этого не происходит. да еще и те квадратики, что занимали последние индексы в массиве, выпадают из массива почему то (количество таких квадратиков равно количеству квадратиков удаленных со сцены) Последний раз редактировалось Don_Vislouh; 10.04.2011 в 16:21. |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Код покажите.
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
|
|
|||||
|
Регистрация: Feb 2011
Адрес: x=0;у=0; да да, я в 2D))
Сообщений: 17
|
то есть вы хотите сказать, что так и должно быть? квадратик 57 не должен изменить свой индекс, заменяя пустое место?
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
то есть я хочу сказать, что как раз должен, если удаление делается правильно.
|
|
|||||
|
Регистрация: Feb 2011
Адрес: x=0;у=0; да да, я в 2D))
Сообщений: 17
|
for (var ik:int = 0; ik < vsearr.length; ik++)
{ if (((vsearr[ik]as DisplayObject).x <= maximumX) && ((vsearr[ik]as DisplayObject).y <= maximumY) && ((vsearr[ik]as DisplayObject).x >= minimumX) && ((vsearr[ik]as DisplayObject).y >= minimumY))
{
//удалили из массива
vsearr.splice(vsearr.indexOf(ik), 1);
}
|
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Когда вы удалили элемент из массива, то vsearr.length изменился, и вы перескакиваете элементы. Нельзя обходить массив и одновременно удалять из него элементы.
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
с конца нужно цикл крутить - тогда можно удалять дальше, не начиная с начала и не обращаясь постоянно к длине массива
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Регистрация: Feb 2011
Адрес: x=0;у=0; да да, я в 2D))
Сообщений: 17
|
вытащил из проекта кусок кода, протестил на простом примере. принцип.создаем массив с квадратиками. по клику мыши если булева переменная true а она изначально true, то по этому клику выполняется строка кода
[code=actionscript] vsearr.splice((vsearr[1]);1)[/code] переменная становится false и все последующие клики мыши будут просто показывать нам трейс индекса того квадратика на котором мы кликнули и также трейс общей длины массива. так. элемент 1 удалился правильно. но! схлопнулся массив неожиданно с другой стороны. теперь у меня квадратик, сначала имеющий индекс 0 выпал из массива, стал -1, а дальше уже пошло все по порядку. я то думал наоборот, занимают место удаленного элемента элементы с большим индексом. теперь. если мы не только выкинем квадратик из массива но еще и напишем [code=actionscript]removeChild(e.target as DisplayObject)[/code] то квадратик удалиться. и мы получаем. -1,1,2,3..куда пропал ноль? |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|