Форум 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 29.05.2014 00:16

Цитата:

Сообщение от LifeIsRhythm (Сообщение 1166877)

Но мне тяжело представить, как можно извлечь от пула в таком виде пользу не сойдя с ума :)

Да, ничего не понятно, совсем. На сколько я понял, пользоваться пулом один из самых верных вариантов относительно оптимизации. Кто то вообще этим пользуется?

ZackMercury 29.05.2014 00:17

Вложений: 1
По моему, самый лучший пример в статье по вашей ссылке.

LifeIsRhythm 29.05.2014 00:35

Удалил свое сообщение, так-как по ссылкам не ходил, а там оказывается все подробно описано.
Вот только с этой строчкой несогласен -
Код AS3:

pool.unshift( new className() );

И ещё с -
Код AS3:

public function ObjectPool(className:Class, length:uint = 1)

Вместо className:Class лучше типизированную фабрику передать.

MikroAcse 29.05.2014 01:02

Цитата:

Кто то вообще этим пользуется?
Все, кому не лень писать пул. Это очень важная часть каждого большого приложения.
И, по-моему, вы просто сами не хотите понять что это, это называется лень. ;)

zCHESNOKz 29.05.2014 01:07

Цитата:

Сообщение от MikroAcse (Сообщение 1166887)
Все, кому не лень писать пул. Это очень важная часть каждого большого приложения.
И, по-моему, вы просто сами не хотите понять что это, это называется лень. ;)

Я не могу понять как потом использовать каждое отдельное значение пула, то есть массива[i] и как при этом присваиваются имена переменных к этим объектам. Не могу заметить связь

То есть на каждый Класс создается ссылка на экземпляр в каждом значении пула(массива) /ИСПОЛЬЗОВАНИЕ/ -> достаем ссылку, присваиваем нужные свойства экземпляру, пользуемся, обнуляем свойства(делаем чистый экземпляр), каким то образом ложим обратно ссылку в массив (пул) и все? Весь принцип?

MikroAcse 29.05.2014 01:13

Берешь и делаешь, ничего сложного.
Это обычный массив.

ZackMercury 29.05.2014 06:06

Создаётся впечатление, что у господина zCHESNOKz какие-то пробелы в знаниях языка, а не простое непонимание пулов.

alexcon314 29.05.2014 08:50

Когда-нибудь посещали столовую? Там на входе лежит стопка с подносами, видели? Так вот эта стопка - пул (подносов). Взяли поднос, использовали, протерли тряпочкой, положили обратно. Что непонятного?

zCHESNOKz 29.05.2014 09:41

Цитата:

Сообщение от alexcon314 (Сообщение 1166906)
Когда-нибудь посещали столовую? Там на входе лежит стопка с подносами, видели? Так вот эта стопка - пул (подносов). Взяли поднос, использовали, протерли тряпочкой, положили обратно. Что непонятного?

Та понял. Хорошо, а как потом использовать каждое отдельное значение пула? Допустим я взял циклом из пула вытащил 100 экземпляров некого класса. Что дальше? сделать еще основной массив в котором я буду присваивать значения пула массиву[i] ? Вот это не ясно

Добавлено через 5 минут
Код AS3:

for (var i:int; i < 5; i++)
        {
                var = pool.getObject(Class) as Class;
                Array.push(var);
                var.x = i;
                var.y = i;
                addChild(var);
        }

Добавлено через 8 минут
ап: добавляем объекты

Добавлено через 14 минут
Код AS3:

 
for (var i:int; i < arr.length; i++)
{
                if(arr[i])
        {
              removeChild(arr[i]);
              pool.releaseObject(Class, var); // ложим в пул
              destroy(arr[i]);
        }
}
 
function destroy(var:Object)
{
      var.property = var.PROPERTY // обнуление екземпляра
}

ап: удаляем объекты

так?

gyfak 29.05.2014 10:41

В вашем вопросе такие хорошие ссылки, все разжевано, только прочитай.
Как объяснить лучше, даже не знаю.
Простейший пул, это массив.
Код AS3:

var myArray:Array=[];
for (var i:int; i < 5; i++)
        myArray.push(new Object);

Пул готов. У вас есть массив с созданными объектами.

Код AS3:

//положили объект на сцену
addChild(arr[arr.length-1])
//он отработал, мы его убираем со сцены
removeChild(arr[arr.length-1])

Все.


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

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