TransformManager для ActionScript 3.0

Многие программы, работающие с графикой, имеют в своём арсенале инструмент свободного преобразования. Названия этого инструмента в разных графических редакторах могут различаться, но суть одна: данный инструмент позволяет перетаскивать, масштабировать и вращать выделенный графический объект (иногда присутствуют и дополнительные возможности, например наклон и т.д.). В Adobe Flash CS5.5 этот инструмент выглядит следующим образом:

Инструмент свободного преобразования

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

Путь первый. Писать собственный инструмент трансформации.

Путь второй. Взять уже созданный до вас готовый инструмент. Для этого достаточно в поисковике вбить запрос «TransformManager» и вы, скорее всего, получите кучу ссылок и несколько уже готовых библиотек с реализацией инструмента преобразования. Естественно, что всё самое интересное окажется платным :-( А как иначе... закон подлости никто не отменял...

Но есть и бесплатные библиотеки, реализующие инструмент свободной трансформации. Об одной из них сейчас и поговорим. Это библиотека классов FreeTransformManager от Ryan. Библиотека написана на ActionScript 3.0 и, как явствует даже из её названия, является бесплатной. Конечно, она не идеальна (как часто я это повторяю:-)), но она умеет:

- перетаскивать выделенный объект;

- вращать выделенный объект;

- масштабировать выделенный объект;

- гибкая настройка внешнего вида самой рамки выделения.

Для начала просто посмотрим, что она из себя представляет. Итак, смотрим и играемся:

Загрузить Adobe Flash Player

Удобная штука. Не так ли? :-)

А теперь давайте научимся встраивать данную реализацию инструмента трансформации в наши проекты. Рассмотрим процесс использования данной библиотеки классов на примере флеш-проекта в Adobe Flash CS5.5.

Первым делом, подключаем саму библиотеку (библиотека прилагается к исходнику, а ссылка на исходник в конце поста - вот такой вот несложный квест) ...

Код ActionScript 3.0:

import com.ryan.geom.*;

Затем создаём объект класса FreeTransformManager.

Код ActionScript 3.0:

var freeTransformManager:FreeTransformManager = new FreeTransformManager();

Для целей тестирования можно передать конструктору объекта в качестве параметра булево значение true и тогда на экран будет выводиться дополнительная информация о манипуляциях с объектом. Звучит сложно, но на примере всё просто и понятно. Итак, пример:

Загрузить Adobe Flash Player

Код ActionScript 3.0:

var freeTransformManager:FreeTransformManager = new FreeTransformManager(true);

Кроме этого мы можем настроить внешний вид нашего инструмента преобразования. Для этих целей служит целый набор свойств класса FreeTransformManager:

- boundingBoxOutlineColor - цвет линии вокруг выделенного объекта;

- boundingBoxOutlineThickness - толщина линии вокруг выделенного объекта;

- handleFillColor - цвет заливки точек трансформации;

- handleOutlineColor - цвет обводки точек трансформации;

- handleRadius - радиус точек трансформации.

Для примера приведу настройки, которые использовались в двух предыдущих флеш-роликах...

Код ActionScript 3.0:

var freeTransformManager:FreeTransformManager = new FreeTransformManager(); freeTransformManager.boundingBoxOutlineColor = 0xff0000; freeTransformManager.boundingBoxOutlineThickness = 2; freeTransformManager.handleFillColor = 0xff0000; freeTransformManager.handleOutlineColor = 0x0000ff; freeTransformManager.handleRadius = 6;

Так, с настройками покончили и переходим к самому главному - регистрируем объекты, к которым и будет применяться инструмент свободного преобразования. Делается это с помощью метода registerSprite(), который в качестве первого параметра принимает объект из списка отображения, к которому можно применить трансформацию, а в качестве второго параметра - настройки трансформации.

Код ActionScript 3.0:

freeTransformManager.registerSprite(mc,{minScale:0.1,maxScale:2});

Здесь "mc" - это мувиклип на сцене. А второй параметр указывает минимальный и максимальный уровень масштабирования данного объекта (весьма полезное ограничение).

Практика показала, что иногда надо временно скрывать инструмент трансформации. Для этого используется метод hideHandlers()...

Код ActionScript 3.0:

freeTransformManager.hideHandlers();

Чтобы снова сделать инструмент доступным, воспользуемся методом showHandlers()...

Код ActionScript 3.0:

freeTransformManager.showHandlers();

А теперь объединим все приведённые выше куски кода в единый законченный код...

Код ActionScript 3.0:

/* подключаем библиотеку классов */ import com.ryan.geom.*; import flash.display.MovieClip; /* создаём объект, который и будем подвергать свободной трансформации */ var mc:MovieClip = new MovieClip(); mc.graphics.beginFill(0x333333,1); mc.graphics.drawRect(0,0,250,200); mc.graphics.endFill(); addChild(mc); mc.x = 150; mc.y = 100; /* создаём и настраиваем объект FreeTransformManager */ var freeTransformManager:FreeTransformManager = new FreeTransformManager(); freeTransformManager.boundingBoxOutlineColor = 0xff0000; freeTransformManager.boundingBoxOutlineThickness = 2; freeTransformManager.handleFillColor = 0xff0000; freeTransformManager.handleOutlineColor = 0xff0000; freeTransformManager.handleRadius = 6; /* регистрируем объект для работы с ним инструментом FreeTransformManager */ freeTransformManager.registerSprite(mc,{minScale:0.1,maxScale:2});

Копируем данный код на временную шкалу проекта в Adobe Flash и проверяем его в работе.

Исходник под Adobe Flash CS5.5 и библиотеку классов FreeTransformManager можно скачать здесь.

А здесь можно посмотреть на использование FreeTransformManager в реальном флеш-проекте.

Автор: admin

Дата добавления: 2011-11-03

Просмотров: 2813

Рейтинг поста: +4-

Правила перепечатки

Социальные закладки:
Комментарии:
К данной заметке комментариев пока нет. Ваш комментарий может стать первым.
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика