понедельник, 24 октября 2011 г.

ApplicationDomain Dynamic Instantiation (NResponder)

Одна из основных трудностей при разработке приложений заключается в копировании графики или доступ к загруженным из вне swf-файлам. К примеру, постройки на карте, юниты, квесты или ключевые персонажи в игре (NPC).  При повторном использовании загруженной графики необходим метод быстрого создания копии, к примеру можно использовать класс duplicateDisplayObject, написанный одним из разработчиков FP Trevor McCauley, aka senocular. Или же просто копировать нужную "часть экрана" как BitmapData


Оба этих способа не очень удобны. Первый тем, что нужно использовать дополнительный класс, второй тем, что копия может быть без прозрачности (альфа-канал). 

FP позволят создавать "экземпляры объекта" (instances) через создание копии зарегистрированного класса в массиве всех "объявленных объектов" внутри FP - ApplicationDomain, через метод getDefinition (в том числе и класса внедренной графики (embeded media) из Flash IDE).

понедельник, 8 августа 2011 г.

Design Pattern - Command, Decorator

Когда я только начинал эту статью, то планировалось, что она будет посвящена рассмотрению только Command Pattern-а, но по ходу ейо совершенствования и доработки статья разрослась и в нейо вошло рассмотрение еще двух паттернов, это Singleton Pattern и Decorator Pattern. Поэтому, статья получилась весьма обширная, я разделил ейо на блоки в которых рассмотрены дополнительные шаблоны, их реализация и примеры (в том числе и на Java). Но основной частью все равно является рассмотрение работы Command Pattern-а с интеграцией его в MVC.

Введение

В этом примере мы рассмотрим один из самых распространенных шаблонов программирования - Командный - Command Pattern. Основной идеей этого "паттерна" является выделение функционала в команду, которая будет обрабатывать входящий, переданный ей объект и делегировать выполнение операции в сам объект или другие функции (команды). По сути своей Command Pattern это чистой воды принцип инкапсуляции в объектно-ориентированных языках, когда действие заменяется объектом-командой, а реализация его скрывается. Полученную команду, затем, можно использовать для модификации "подходящих" объектов сколько угодно раз, и в случае необходимости расширения, изменить  функционал только в самом объекте или путем модификации команды.

Рисунок 1. Схематическое представление Command Pattern

Реализация команд проста и интуитивно понятна. Они указывают объекту на действие (набор действий).

понедельник, 13 июня 2011 г.

Custom Gallery ver. 0.1

Моя старая разработка на ActionScript 3.0 - полностью настраиваемая галлерея. Делал ейо еще зимой. Сейчас взялся за доработку, переработку и решил выложить бесплатную тестовую версию. Вы можете использовать ейо на любом свойом проекте, только при одном условии - мне будет известен этот проект (сайт, игра, интерактивная презентация и другие разработки на технологии Flash).

Рисунок 1. Внешний вид - базовый (картинки сторонние).

Рисунок 2. Внешний вид - развернутая картинка, название, описание, ссылка.

среда, 1 июня 2011 г.

Design Pattern - MVC

Patterns, они же "Шаблоны" или алгоритмы программирования (далее паттерны) предназначены для упрощения работы с кодом, а также организации функционала для лучшего его понимания и расширения. По сути, формирование паттерна это последняя стадия рефакторинга, на которой код принимает наиболее структурированный вид. Паттерн это всего лишь структура кода которая может быть применена к обширному кругу задач. Самым распространенным паттерном является, MVC - связка Model - View - Controller, в которой классы Model (Модель) включают в себя данные и упорядочивают их, View классы управляют отображаемыми на экране объектами, и Control классы управляют данными в модели, могут их изменять, а также обрабатывают сообщения от View, и основе этих изменений (изменений в модели) происходит обновление объектов на экране, т.е. классов View. Таким образом различный функционал, выполняющий одинаковые функции может быть объединен в блоки, которые затем будет легко расширить или изменить. Ниже можно посмотреть простейшую диаграмму того как устроен паттерн MVC.


Простейшей реализацией MVC паттерна является телевизор с пультом управления, где пульт это Controller управляющий каналами в телевизоре, внутренность телевизора представляет собой Model (данные в виде каналов), а View это экран. В данном случае экран не знает о количестве каналов и о том как они изменяются, пульту также абсолютно все равно какой экран у телевизора, а каналы не зависят от переключателя. 

пятница, 15 апреля 2011 г.

TileMaker for Adobe Photoshop CS5 (beta)


При создании изометрических игр  (Isometric Games) *[1] используются алгоритмы "плитки" или "тaйлинга" (tile) *[2], т.е. все игровое пространство разбивается на кусочки-"тайлы", которые вступаю в игру по мере их открытия, захвата или достижения пользователем определенного уровня. Если игровая карта достаточно велика, чтобы подгрузить за один раз, то ее удобно разбить на кусочки, загрузка которых происходит постепенно (в фоновом режиме). Также такое разбиение ускоряет выход готового продукта в тестовый режим. Когда карта готова ее нужно разрезать на одинаковые кусочки, что может занять длительное время если карта большая и количество кусочков более 50. Средствами Photoshop автоматически разрезать карту на равные кусочки не получается, поэтому мною был написан плагин позволяющий это сделать.

TileMaker - плагин для Photoshop предназначенный для автоматической разрезки картинки на заданное количество кусочков.
Интерфейс

Данный плагин написан на Adobe Flash Builder 4 (framework Flex), JS, Photoshop API. Как он работает, как написать похожий плагин и что для этого нужно я расскажу дальше.