Руководство по actionscript. часть 4, стр. 148

? В приложениях, где должно минимизироваться влияние колебаний скорости кадров среды Flash, применяйте один объект Timer для управления всеми анимациями и создавайте анимации, основанные на скорости (дополнительную информацию можно найти в разд. «Анимация, основанная на скорости»).

? Когда колебания скорости кадров среды выполнения Flash считаются приемлемыми, используйте событие Event. ENTER FRAME (поскольку код для анимации, создаваемой с помощью события Event. ENTER FRAME, в основном проще его эквивалента, реализуемого с помощью объекта Timer).

? Избегайте использования независимых объектов Timer для анимации отдельных отображаемых объектов. Там, где это возможно, используйте один объект Timer для управления всеми анимациями. С другой стороны, если вы хотите обновлять различные объекты через различные интервалы времени, подходящим решением могут оказаться независимые объекты Timer.

Обобщенный класс Animator

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

Простой класс Animator, представленный в листинге 24.7, демонстрирует один из возможных путей абстрагировать реализацию возможностей для создания анимации от анимируемых объектов. Каждый экземпляр класса Animator может перемещать указанный объект DisplayOb j ect в заданную позицию за определенный промежуток времени. Стоит отметить, что в листинге 24.7 основное внимание уделяется структуре класса, который используется для вынесения кода, управляющего анимацией. В связи с этим класс Animator не реализует сложные анимационные возможности. Их можно реализовать в классе mx. effects. Tween платформы разработки Flex и классах fl. trans it ions. Tween и fl. motion. Animator среды разработки Flash CS3.

Ниже представлен листинг класса Animator. Понять код помогут комментарии.

Листинг 24.7. Обобщенный вспомогательный класс для создания анимации

package { import flash. display.*; import flash. events.*; import flash. utils.*;

// Очень простой класс для создания анимации, который демонстрирует, как // отделить реализацию анимационных возможностей от анимируемого объекта public class Animator extends EventDispatcher {

// Ссылается на анимируемый объект

private var target:DisplayObject;

// Всякий раз, когда начинается воспроизведение анимации, мы записываем

// время начала в переменную startTime

private var startTime:Number;

// Длительность анимации, в миллисекундах

private var duration-.Number;

// Всякий раз, когда начинается воспроизведение анимации, мы сохраняем // начальную позицию объекта target в переменных startX и startY private var startX:Number; private var startY:Number;

// Всякий раз, когда начинается воспроизведение анимации, мы сохраняем // разницу между начальной и конечной позициями в переменных deltaX // и deltaY

private var deltaX:Number; private var deltaY:Number;

// Функция-конструктор принимает ссылку на анимируемый объект public function Animator (target:Di splayObject) { this. target = target;

}

// Начинает воспроизведение анимации, которая заключается в перемещении // объекта target из его текущей позиции в новую позицию с координатами // (toX, toY) за ‘duration’ миллисекунд public function animateTo (toX:Number, toY:Number,

duration:Number):void {

// Запоминаем, где находился объект target в момент начала // воспроизведения данной анимации startX = target. х; startY = target. у;

// Вычисляем разницу между начальной и конечной позициями

// объекта target

deltaX = toX — target. x;

deltaY = toY — target. у;

startTime = getTimer( );

// Запоминаем длительность данной анимации this. duration = duration;

// Начинаем получать уведомления о возникновении событий // Event. ENTER_FRAME. Всякий раз, когда происходит // запланированное обновление экрана, мы будем // обновлять позицию объекта target

target. addEventLi stener(Event. ENTER_FRAME, enterFrameLi stener);

}

// Обрабатывает события Event. ENTER_FRAME.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 134
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 006
  • 07.03.2011">Руководство по actionscript. часть 4, стр. 114
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.118
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 136
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 149
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.38
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.21
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 132
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 061
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 054
  • 21.10.2011">Мегафон
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 007
  • 03.11.2011">Как создать кинопостер
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.61
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...