Как удалить Объект в Java
VintoreZ92 Дата: Понедельник, 04 Февраля 2013, 10:26 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здраствуйте товарищи, передо мной стоит задача удалять нажатием мыши некоторые ненужные объекты... Каким образом можно добится? До сих пор у меня получается только делать объект невидимым, необходимо каким-то образом удалять его.
Red_Squirrel Дата: Понедельник, 04 Февраля 2013, 11:48 | Сообщение # 2
участник
Сейчас нет на сайте
Это зависит от того, как ты эти объекты хранишь
FadeBaker Дата: Среда, 06 Февраля 2013, 23:19 | Сообщение # 3
JavaSE Game Developer
Сейчас нет на сайте
Объект в Java удаляется автоматически, когда на этот объект нет ни одной ссылки.
Уроки по GM Minecraft 2D на GM — Мои проекты — Blood Harvest [2D] — Original Blood Harvest [2D]: Remastered Edition Adventure Craft [2D] — Sandbox Space Shock [2D] — Scroll Shooter Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
Desert_Hunter Дата: Среда, 06 Февраля 2013, 23:37 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Цитата (Fade )
Объект в Java удаляется автоматически, когда на этот объект нет ни одной ссылки.
Ты вопрос то понял?)
Сообщение отредактировал Desert_Hunter - Среда, 06 Февраля 2013, 23:39
FadeBaker Дата: Четверг, 07 Февраля 2013, 00:11 | Сообщение # 5
JavaSE Game Developer
Сейчас нет на сайте
Desert_Hunter , я прослоупочил, лол. Ну тут все просто. Если объект находится в списке, то при нажатии на него просто удалять его из списка. Если же на него указывает ссылка, то ссылке присваивать null .
Уроки по GM Minecraft 2D на GM — Мои проекты — Blood Harvest [2D] — Original Blood Harvest [2D]: Remastered Edition Adventure Craft [2D] — Sandbox Space Shock [2D] — Scroll Shooter Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
wawe Дата: Пятница, 15 Февраля 2013, 14:34 | Сообщение # 6
был не раз
Сейчас нет на сайте
Если у тебя объект в списке ArrayList<>; то ты можешь удалить его с помощью метода remove(номер объекта); Вот пример: List<Object> object = new ArrayList<Object>(); for (int a = 0; a < object.size(); a++) { object.remove(a); } метод size() подсчитывает сколько объектов в списке и этот пример удаляет все объекты, которые находятся в списке. можно просто найти необходимый объект, который тебе нужно удалить. Например: object.remove(7); объект под номером 7 удалится. Но если ты попробуешь еще раз удалить объект под номером 7, то компилятор сообщит об ошибке, что объект удалить невозможно, потому-что его не существует. Надеюсь я помог.
Сообщение отредактировал wawe - Пятница, 15 Февраля 2013, 20:21
FadeBaker Дата: Суббота, 16 Февраля 2013, 18:17 | Сообщение # 7
JavaSE Game Developer
Сейчас нет на сайте
Цитата (wawe )
for (int a = 0; a < object.size(); a++) { object.remove(a); }
Бред. Для того, чтобы удалить все объекты из коллекции/очистить коллекцию, достаточно вызвать у нее метод clear().
Вот простой пример удаления объектов из коллекции:
Код
public class Entity { public boolean destroyed; public void destroy() { destroyed = true; } }
Создаешь список объектов:
Код
public List<Entity> entities = new ArrayList<Entity>();
И в методе, который вызывается постоянно:
Код
for (int i = 0; i < entities.size(); i++) { Entity e = entities.get(i); if (e.destroyed) entities.remove(i--); }
И теперь когда нужно уничтожить объект (только если он находится в списке), пишешь:
Уроки по GM Minecraft 2D на GM — Мои проекты — Blood Harvest [2D] — Original Blood Harvest [2D]: Remastered Edition Adventure Craft [2D] — Sandbox Space Shock [2D] — Scroll Shooter Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
amage Дата: Понедельник, 18 Февраля 2013, 18:29 | Сообщение # 8
уже был
Сейчас нет на сайте
Можно еще явно вызвать сборщик мусора System.gc()
http://gdforum.ru - Форум про разработку компьютерных игр
NancyWithoutSid Дата: Суббота, 03 Августа 2013, 20:06 | Сообщение # 9
был не раз
Сейчас нет на сайте
Цитата (Fade )
for (int a = 0; a < object.size(); a++) { object.remove(a); }
ConcurrentModificationException получите Цитата (wawe )
for (int i = 0; i < entities.size(); i++) { Entity e = entities.get(i); if (e.destroyed) entities.remove(i--); }
И вы тоже. Но вам еще design error. За метод, который "постоянно вызывается" Цитата (Fade )
Можно еще явно вызвать сборщик мусора System.gc()
явный вызов сборщика мусор приводит к явным тормозам. Не трогайте его без надобности пожалуйста Цитата (wawe )
JavaSE Game Developer
really? Всем добра
Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...