Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Удаление конкретного объекта из массива таких же объектов (http://www.flasher.ru/forum/showthread.php?t=145710)

КорДум 17.10.2010 15:28

kutuzov, тоже вариант, можно даже скомбинировать это с вектором. Даже нужно. Пожалуй, самый хороший вариант.

f.g.programmer 17.10.2010 15:31

Можно просто удалять конкретную пулю
Код AS3:

private var _bullets:Vector.<Bullet>;
private function removeBullet(event:Event):void {
        var bullet:Bullet = event.target as Bullet;
        _bullets.splice(_bullets.indexOf(bullet), 1);
        bullet.destroy();
}

Добавлено через 53 секунды
отвлёкся, долго писал :)

КорДум 17.10.2010 15:44

Да-да, я так и сделал (:

gloomyBrain 17.10.2010 16:05

А зачем удалять пулю из массива? Ставим ей скорость в [0, 0] и удаляем со сцены. Когда нужно стрельнуть - ищем пулю со скоростью [0, 0], добавляем ее на сцену ставим ей нужную скорость. Буфер пулек получается =)

КорДум 17.10.2010 16:08

gloomyBrain, а это не будет лишним действием? Мне кажется, что будет менее затратно удалять-добавлять, нежели прогоняться по всему вектору в поиске. Ну, не по всему, по части, но все же. Хотя этот вариант довольно-таки интересен.

gloomyBrain 17.10.2010 16:14

@КорДум
Смотря как обустроить этот самый поиск =) Вряд ли затраты на создание новых объектов будут чрезмерно велики. Хотя, с другой стороны - зачем плодить новые объекты там, где это вовсе не требуется?

i.o. 17.10.2010 16:14

Пул пуль нужно делать, а не рыскать по всему массиву в поиске ненужной

КорДум 17.10.2010 16:20

gloomyBrain, в общем, довольно хорошая идея, но, все же стандартные методы splice и indexOf как-то поэлегантнее выглядят. Хотя и повергают в сомнения, а так ли хороши они. Ибо за Адобой довольно много косяков, так сказать.

i.o., чего делать?

i.o. 17.10.2010 16:25

Пул объектов (pool)

andrew911 17.10.2010 16:28

КорДум

Пул (что-то типа кэша) - массив объектов. Когда нужна пуля - достаем ее из массива, обнуляем ее состояние и работаем с ней.
Когда надо удалить - то просто убираем со сцены и заносим в пул.

Зависит от ситуации, но создание объектов обычно достаточно ресурсоемкая, по сравнениею с другими, операция.

Минусы - возможно больше памяти надо, нагрузка при начальной инициализации.
Плюсы - не задействуется сборщик мусора, да и нагрузка уменьшается.


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

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