Форум 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=208031)

zCHESNOKz 28.05.2014 23:03

Пулы. Оптимизация. Использование в коде
 
Ребят нужна помощь, как работать с пулами? * http://ilia64.com/as3/patterns/object-pool/ и * http://help.adobe.com/ru_RU/as3/mobile/WS948100b6829bd5a6-19cd3c2412513c24bce-8000.html Мне совсем не понятно как использовать пул. Допустим я делаю игру, и уровни строю путем добавления нового экземпляра в массив, позже все удаляю
Код AS3:

addChild(enemie_1 = new Bot_01( 3 , 1 , 'g' , 0 ));
                        enemie_1Arr.push(enemie_1);

В экземпляр класса Bot_01 нужно передать аргументы, как это будет выглядеть с использованием пула?
И, еще, да, конечно к сотням ботов я добавлю пул, а нужен ли он в мелких деталях, таких как спецэффекты, при этом их тоже будет как минимум несколько сотен (при постоянных добавлениях/удалении)
Вообщем, ребят, помогите пожалуйста, расскажите как использовать пул?

MikroAcse 28.05.2014 23:16

Код AS3:

// конструктор
public function Bot_01(a:Some, b:Some, c:Some, d:Some) {
    initialize(a, b, c, d);
}
 
public function initialize(a:Some, b:Some, c:Some, d:Some):void {
    // тут вы (пере)создаете ваш объект
}

То есть если вы хотите использовать объект заново, вы его должны переинициализировать, вызвав функцию initialize.

zCHESNOKz 28.05.2014 23:23

Дело в том, что я пока еще СОВСЕМ не понимаю как использовать пул

MikroAcse 28.05.2014 23:27

Это обычный массив использованных объектов.
То есть при удалении объекта со сцены ты добавляешь его в пул (pool.push(obj)).
А потом по надобности берешь (pool.shift()).

UPD: поправил Pool

zCHESNOKz 28.05.2014 23:29

Цитата:

Сообщение от MikroAcse (Сообщение 1166865)
Это обычный массив использованных объектов.
То есть при удалении объекта со сцены ты добавляешь его в пул (pull.push(obj)).
А потом по надобности берешь (pull.shift()).

Хорошо, тогда у меня возникает вопрос о Сбросе всех свойств объекта, как с этим быть? Что бы потом с пула вынуть чистенький объект

Добавлено через 4 минуты
Можно самый простенький пример использования пула?

MikroAcse 28.05.2014 23:37

Чистенький никак не вытянешь.
Берешь и ручками очищаешь.

ZackMercury 28.05.2014 23:54

PHP код:

pull 

По-моему, не pull, а pool(от англ. бассейн или "общий фонд", который вариант перевода более актуален для данной ситуации).

zCHESNOKz 28.05.2014 23:57

Цитата:

Сообщение от SuriTheAngel (Сообщение 1166871)
PHP код:

pull 

По-моему, не pull, а pool(от англ. бассейн или "общий фонд", который вариант перевода более актуален для данной ситуации).

А нельзя как вариант просто брать объекты из некого статического массива и попросту их по окончанию использования не удалять?

ZackMercury 29.05.2014 00:04

Ну, в статьях по вашим ссылкам довольно простым языком всё расписано.
Попробуйте перечитать и переосмыслить.

zCHESNOKz 29.05.2014 00:07

Цитата:

Сообщение от SuriTheAngel (Сообщение 1166875)
Ну, в статьях по вашим ссылкам довольно простым языком всё расписано.
Попробуйте перечитать и переосмыслить.

Если спрашиваю как пользоваться пулом , значит, то что там написано не до понимаю, и хочу узнать у тех, кто пользуется пулами, как все происходит


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

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