|
|
|||||
Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
|
Как удалить объект из массива
Есть массив пулек, если пулька улетает за границу экрана или попадает в цель ,то я ее удаляю из массива так:
но он не всегда удаляет правильно, то есть, бывают случаи, когда перед удалением текущей пульки удаляется какая либо другая, массив смещается, и вот этот метод, который нашел индекс нашей пульки удаляет из массива,в котором вся индексация смещена, и получается ,что удаляется из массива не та пулька, как можно это обработать? |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Странно.. Как такое может быть? Вы передали пульку на удаление и только в методе определился индекс, ход выполнения прерывается и в этот метод попадает другая пулька. Индекс пересчитывается. но старый где-то сохраняется... Даже представить сложно, как такое возможно.
|
|
|||||
Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
|
Ну я убедился в этом! я сам офигел! в итоге я переписал немного и все заработало, в условии , где у меня колизится пулька с врагами и проверяется вылет пульки за границы экрана я ставлю свойство isDead в true,
а потом в цикле апдейта я проверяю isDead и там же удаляю если в тру это значение |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Так получше будет.
И я был не прав в предыдущем сообщении, я не подумал |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
я на это даже внимания не обратил))) А лучше я употребил про присвоение элемента свойству.
|
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
я бы все таки делал это статичной функцией , аля InGame.removeBullet(this);
Последний раз редактировалось Isfet; 20.02.2014 в 10:28. |
|
|||||
Цитата:
Многие намеренно пишут явную проверку, чтобы проще было читать. Понятно, что в этом случае для программы разницы нет, но вот при чтении человеком, будет сразу понятно, что там булево значение, а не приведение к типу Boolean. Что бы ты подумал, если бы увидел вот такой кусок г-кода? (не обращая внимания на то, что тут названия не по конвенциям) Что hasOne это Boolean? Или может это проверка на null с неявным приведением к Boolean, например? Цитата:
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
indexOf возвращает -1, если объект не найден.
splice при удалении с -1 удаляет последний элемент. Без if'а не обойтись.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Добавлено через 3 часа 59 минут Цитата:
|
Часовой пояс GMT +4, время: 21:58. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|