- •Обозначения и сокращения
- •Введение
- •1 Простое SWT приложение
- •1.1 Создание приложения
- •1.2 Запуск SWT программы из командной строки
- •1.3 Структура приложения
- •1.4 Слушатели событий
- •1.5 Работа с подпроцессами
- •1.5.1 Диспетчеризация внутренних событий
- •1.5.2 Нить пользовательского интерфейса SWT
- •1.5.3 Выполнение кода за пределами нити UI
- •1.5.4 Рабочая среда и нити
- •2 Элементы управления
- •2.1 Стандартные виджеты
- •2.2 Пользовательские виджеты
- •2.3 Класс Label
- •2.3.1 Стили
- •2.3.2 Текст
- •2.3.3 Изображение
- •2.3.4 Разделители
- •2.3.5 Выравнивание
- •2.3.6 Перенос слов текста
- •2.3.7 Пример использования этикеток
- •2.4 Класс Text
- •2.5 Класс Button
- •2.5.1 Стили
- •2.5.2 Текст
- •2.5.3 Изображение
- •2.5.4 Выравнивание
- •2.5.5 Push Button
- •2.5.6 Toggle Button
- •2.5.7 Check Box
- •2.5.8 Radio Button
- •2.5.9 Selection (выбор)
- •2.5.10 Указание используемой по умолчанию кнопки
- •2.6 Класс List
- •2.6.1 Стили
- •2.6.2. Добавление элементов в список
- •2.6.3. Удаление элементов из списка
- •2.6.4 Получение элементов списка
- •2.6.5 Настройка значений элементов
- •2.6.6 Поиск элементов
- •2.6.7 Выбор элементов списка
- •2.6.8 Обработка событий списка List
- •2.7 Класс Link
- •2.7.1 Стили
- •2.7.2. Текст
- •2.7.3. Обработчики событий
- •2.8 Класс Table
- •2.9 Класс TableColumn
- •2.10 Класс TableItem
- •2.11 Класс Item
- •2.12 Класс Combo
- •2.13 Класс FileDialog
- •2.14 Класс Menu
- •2.15 Класс MenuItem
- •2.16 Класс MessageBox
- •2.17 Класс TabFolder
- •2.18 Class TabItem
- •3 Макеты
- •3.1 Класс FillLayout
- •3.2 Класс GridLayout
- •3.3 Класс GridData
- •3.4 Класс RowLayout
- •3.5 Класс RowData
- •3.6 Класс FormLayout
- •3.7 Класс FormAttachment
- •3.8 Класс FormData
- •4 Графика
- •4.1 Класс GC
- •4.2 Класс Canvas
- •5 Пакет printing
- •5.1 Класс PrintDialog
- •5.2 Класс Printer
- •5.3 Класс PrinterData
- •6 Пакет events
- •6.1 Класс Event
- •7 Разработка приложений
- •8 Разработка новых компонент
- •9 Дополнительные возможности библиотеки SWG
- •9.1 Компоненты управления
- •9.2 Виджеты
- •9.3 Плоские формы
- •9.4 Линии, точки и ломанные
- •9.5 Класс PathShape
- •10 Анимация
- •10.1 Типы анимации
- •10.2 Анимация во времени
- •10. 3 Поддержка времени
- •10.4 Пример приложения с элементами анимации
- •Список использованных источников
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