Универсальный Pool для JavaScript объектов

Вторая итерация паттерна Pool для JavaScript. Вкратце, Pool — это место для хранения объектов, которые то появляются, то исчезают. Pool позволяет создать их заранее в нужном количестве, а затем повторно использовать, избегая вызова Garbage Collector.  Паттерн, который необходим для гейм-девелопинга во всех языках с автоматической сборкой мусора.

Код я публикую на правах ревю. То есть публикация любого кода в моем блоге не означает, что он правильный и хороший. Критика приветствуется.

Пример использования Pool

Для всплывающих пузырьков в кликере — сначала создаю пул с пузырьками

При запуске эффекта всплывания

 

Универсальный Pool для JavaScript объектов: 6 комментариев

  1. Zaxx чего у тебя свежие посты задним числом? Я что пропустил этот пост или ты его позже добавил? =) Надо будет прочитать чуть позже

  2. Отличное решение Zaxx, но почему тебе не использовать нативное решение? Мне в проекте это не нужно было но, под твои нужды самое оно: создай группу в которую будешь добавлять пузырки и извлекаешь из нее первый «мертвый» объек пузырек. Если таков не найден (все в анимации или пока группа пустая) то создаем новый и добавляем в группу. Включаем для него анимацию, как только она закончиться, на oncomplete вешаем свой обработчик, который будет «убивать» пузырек. Фейзер автоматом не рисует мертвые объекты, но в памяти они есть.

  3. п.с. забыл сказать что для поиска первого мертвого пузыря тоже есть метод в фейзере

  4. я блин не пока знаю, может WordPress глючит
    ты через RSS трекаешь обновления?

  5. Да, это хороший способ, я подумаю.
    Просто пока Phaser не отскакивает у меня от зубов — в смысле я не владею фреймворком на бессознательном уровне, как синьор
    поэтому мой код, скорее всего, избыточен и более тяжел, чем мог быть в идеале

    Еще я точно знаю, что в моем Pool есть и как он работает, у него минимум функций. А при добавлении объекта в группу задействуется много другой логики Phaser — это может стать источником багов.

  6. Я старым дедовским способом трекаю — открываю твой сайт каждый день и смотрю нет ли новых постов :)

    Конечно, можешь начать с своего пула, что бы лучше почувствовать Фейзер, но скажу что группы это единственное из за чего стоит ним пользоваться :) Вот сейчас Элспер сказал, что кнопки сливаются с интерфесом. Только благодаря тому, что все элементы интерфейса у меня это отдельные группы, я за пару минут прикрутил к ним анимацию.

    Не затягивай, как только освоишь группы, ничего без них делать не будешь :) Но по началу я тоже не хотел ими пользоваться, но в конце все равно пришел к ним. Группа это тот же коасс, только для инкапсюляции элемента интерфейса.

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">