Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013_1 / ООП / Введение_SWG.pdf
Скачиваний:
82
Добавлен:
23.02.2015
Размер:
3.32 Mб
Скачать

setAlignment(int alignment)- задание выравнивания getAlignment()- запрос выравнивания

Класс Picture – изображение, которое можно масштабировать, поворачивать и т.п.

setImage(Image image) — задание изображения getImage() — запрос изображения

10 Анимация

Анимация позволяет динамически изменять свойства компонента, например, цвет, размер, положение и др. Изменение может быть вызвано временем, интерактивно, непосредственным изменением атрибута другим объектом, альтернативным воздействием со стороны ввода. Выполнение анимации не требует от разработчика ручного изменения атрибутов компонента. Достаточно задать траекторию изменения параметра совокупностью точек. Анимацию можно начать, остановить, активировать и деактивировать. Анимацию по времени можно приостановить и продолжить далее. Объектом анимации является экземпляр класса Control.

Инструменты анимации обеспечивают различные типы анимации: Integer, Float, Color, Point и Object.

10.1 Типы анимации

Простая анимация (от — до) задается начальным и конечным значением атрибута. Анимация производится линейной интерполяцией промежуточных значений. Для улучшения гладкости рекомендуется использовать Float значения изменяемого атрибута.

Анимация фреймом ключевых позиций (Key-frame) задается списком значений в ключевых точках. Изменение производится интерполяцией каждого фрагмента из соседних точек списка.

Анимация по времени (Time based) использует время как стимул процесса изменений. Простая и фреймовая анимация могут быть анимацией по времени. Для этого задается начальное время анимации. Окончание может быть задано временем или позицией.

Интерактивная анимация (Interaction based) использует перемещение мышки. Имеет три разновидности: LinearDrag, PlanarDrag и CircularDrag. Линейная перемещает компонент по линейному закону. Планарная перемещает в плоскости экрана свободно. Дуговая перемещает с поворачиванием объекта.

Анимация по траектории, заданной другим объектом (DataTracker) — источником данных, например, базой данных.

166

Анимация сопровождается генерированием событий: BEGIN, END, REPEAT, PAUSE и RESUME.

При использовании линейной анимации можно задавать аппроксимацию траектории кубическими сплайнами Безье, что улучшает гладкость движения,

10.2 Анимация во времени

Классы анимации по времени позволяют изменять атрибуты объекта во времени, обеспечивая различные варианты задания траектории и поведения сцены. Основные функции анимации представлены двумя классами: Animation и Manipulator. Объекты управляются классом Animation, а атрибуты — классом Manipulator, являющимся его потомком. Абстрактный класс Animation имеет конструктор Animation(Control control), а экземпляры метод getControl(). Абстрактный класс Manipulator изменяет атрибуты, задаваемые именем или специальным методом:

setAnimationMethod(Method animationMethod) — задание метода;

setAnimationAttribute(String attribute, Class parameterType) — задание атрибута;

setAnimationMethodName(String methodName, Class parameterType) — задание имени метода;

getAnimationAttribute() — запрос атрибута; getAnimationMethodName() — запрос имени метода; getAnimationMethod() — запрос имени метода.;

setAnimationMethod(Method animationMethod, IConverter converter) — задание метода анимации и конвертора;

setAnimationAttribute(String attribute, Class parameterType, IConverter converter) — задание атрибута для анимации и конвертора;

setAnimationMethodName(String methodName, Class parameterType, Iconverter converter) — задание имени метода для анимации и конвертора;

setAnimationMethod(String name, boolean isMethodName, Class parameterType, IConverter converter) — задание метода для анимации и конвертора.

Анимация может быть в двух состояниях доступности: setEnabled(boolean isEnabled) — задание доступности; isEnabled() — запрос доступности.

167

Для контроля расположения анимируемого объекта в площади родителя используются:

setAutoLayout(boolean autoLayout) — установить изменение родителя при анимации;

isAutoLayout() — запрос состояния родителя.

Для задания сглаживания сплайнами в простой анимации используются методы:

setKeySplines(float x1, float y1, float x2, float y2) — задание двух точек; setKeySplines(float[ ] keySplines) — задание двух точек массивом; getKeySplines() — запрос массива точек.

Класс ColorAnimation служит для изменения атрибута цвета объекта, например:

new ColorAnimation(oblong, “BackgroundRGB”, 5000, new RGB(0,0,255), new RGB(255,0,0));

Конструкторы класса цветовой анимации имеют вид:

ColorAnimation(Control control, String attribute, long duration, RGB from, RGB to) ;

ColorAnimation(Control control, String attribute, long begin, long duration, RGB from, RGB to);

ColorAnimation(Control control, String attribute, ITrigger[ ] begin, long duration, RGB from, RGB to).

Некоторые методы объектов цветовой анимации имеют вид: setFrom(RGB to) ;

setTo(RGB to) ; getFrom(); getTo().

Класс FloatAnimation используется для изменения вещественных атрибутов анимируемого объекта, например:

new FloatAnimation(arc, “ArcAngle”, 5000, 10f, 300f); Конструкторы класса вещественной анимации имеют вид:

168

FloatAnimation(Control control, String attribute, long duration, float from, float to)

;

FloatAnimation(Control control, String attribute, long begin, long duration, float from,

float to);

FloatAnimation(Control control, String attribute, ITrigger[ ] begin, long duration, float

from, float to).

Методы объекта: setFrom(float to) ; setTo(float to); getFrom(); getTo() .

Класс FloatArrayAnimation работает с полигонами, например: float[ ] FROM = {60f, 100f, 80f, 0f, 100f, 100f, 0f, 80f, 100f, 60f, 80f, 160f, 60f, 60f, 160f, 80f};

float[ ] TO = {60f, 100f, 80f, 120f, 100f, 100f, 120f, 80f, 100f, 60f, 80f, 40f, 60f, 60f, 40f, 80f};

new FloatArrayAnimation(polygon, “Points”, 5000, FROM, TO);

Конструкторы класса:

FloatArrayAnimation(Control control, String attribute, long duration, float[ ] from, float[ ] to) ;

FloatArrayAnimation(Control control, String attribute, long begin, long duration, float[ ] from, float[ ] to);

FloatArrayAnimation(Control control, String attribute, ITrigger[ ] begin, long duration, float[ ] from, float[ ] to).

Методы:

169

setFrom(float[ ] to); setTo(float[ ] to); getFrom(); getTo().

Класс IntegerAnimation работает с целыми атрибутами, например: new IntegerAnimation(scale, “Position”, 5000, 10, 300); Конструкторы класса:

IntegerAnimation(Control control, String attribute, long duration, integer from, integer to);

IntegerAnimation(Control control, String attribute, long begin, long duration, integer from, integer to) ;

IntegerAnimation(Control control, String attribute, ITrigger[ ] begin, long duration, integer from, integer to).

Методы:

setFrom(integer to); setTo(integer to); getFrom();

getTo() .

Класс PointAnimation перемещает объект между двумя заданными точками, например:

Point FROM = new Point(10, 10); Point TO = new Point(150, 150);

new PointAnimation(button, “Location”, 5000, FROM, TO);

Конструкторы класса:

PointAnimation(Control control, String attribute, long duration, Point from, Point to);

170

PointAnimation(Control control, String attribute, long begin, long duration, Point from, Point to);

PointAnimation(Control control, String attribute, ITrigger[ ] begin, long duration, Point from, Point to).

Методы: setFrom( Point to); setTo( Point to); getFrom(); getTo().

Класс KeyFrameAnimation — абстрактный класс для набора потомков анимаций по времени: ColorAnimationKeyFrame, FloatAnimationKeyFrame, FloatArrayAnimationKeyFrame, IntegerAnimationKeyFrame, ObjectAnimationKeyFrame и PointAnimationKeyFrame. Поддерживаются следующие режимы интерполяции:

CALC_MODE_LINEAR — линейная (по умолчанию); CALC_MODE_DISCRETE — дискретная по узлам заданной траектории;

CALC_MODE_PACED — пошаговая с автоматическим выбором интервала времени;

CALC_MODE_SPLINE — сплайновая. Методы:

setCalcMode(int calcMode); getCalcMode().

Для задания периода времени для каждого фрагмента пути используются методы:

setKeyTimes(float[ ] keyTimes) — задание отсчетов времени для узлов. Первый должен быть 0. Если задан null, то равные интервалы для всех узлов;

getKeyTimes() — запрос отсчетов времени. Для задания сплайн-интерполяции есть методы:

setKeySplines(float[ ] keySplines) — задание массива узловых точек; getKeySplines() — запрос пар узловых точек [x1, y1, x2, y2].

171

Класс ColorAnimationKeyFrame позволяет анимировать цветовые эффекты для геометрических объектов.

Конструкторы класса:

ColorAnimationKeyFrame(Control control, String attribute, long duration,

RGB[ ]

keyValues) — создает траекторию изменения цвета объекта класса

Control;

ColorAnimationKeyFerame(Control control, String attribute, long begin, long duration,

RGB[ ] keyValues) — создает траекторию изменения цвета объекта класса Control;

ColorAnimationKeyFrame(Control control, String attribute, ITrigger[ ] begin, long duration, RGB[ ] keyValues) — создает траекторию изменения цвета объекта класса Control.

Методы:

setKeyValues(RGB[ ] keyValues); getKeyValues();

set(int calcMode, RGB[ ] keyValues, float[ ] keyTimes);

set(int calcMode, RGB[ ] keyValues, float[ ] keyTimes, float[ ] keySplines).

Класс FloatAnimationKeyFrame позволяет изменять произвольный атрибут объекта по заданной вещественными значениями траектории.

Конструкторы класса:

FloatAnimationKeyFrame(Control control, String attribute, long duration, float[ ] keyValues) ;

FloatAnimationKeyFrame(Control control, String attribute, long begin, long duration, float[ ] keyValues) ;

FloatAnimationKeyFrame(Control control, String attribute, ITrigger[ ] begin, long duration, float[ ] keyValues) .

Методы:

setKeyValues(float[ ] keyValues) ; getKeyValues();

set(int calcMode, float[ ] keyValues, float[ ] keyTimes);

172

Соседние файлы в папке ООП