ActionScript 3: плавная программная анимация - PullRequest
5 голосов
/ 30 мая 2009

Я хочу анимировать объекты MoviveClips / Sprite максимально плавно. Однако до сих пор единственный метод, который работает, это поместить код движения в обработчик события EnterFrame. У этого подхода есть одна проблема: когда частота кадров на конкретной машине ниже желаемой частоты кадров, вся игра замедляется. Я хочу иметь возможность делать это независимо от времени.

Ответы [ 2 ]

12 голосов
/ 31 мая 2009

Есть два способа сделать программную анимацию в Flash Player. Первое, что вы уже указали, используя onEnterFrame. Однако, как вы уже могли заметить, чтобы получить плавную анимацию, вам нужно увеличить общую частоту кадров вашего фильма. Это также увеличит нагрузку на процессор на весь период работы SWF. Это не то, что вы всегда хотите.

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

Два года назад или около того я решил создать свои собственные библиотеки анимации для Flash (из-за моего разочарования по поводу существующих тогда доступных библиотек анимации). Я выпустил его под названием Coretween , и эта библиотека позволяет вам, помимо прочего, выбирать, какой тип анимации вы предпочитаете для каждой отдельной анимации. На странице документации я привожу пример разницы между кадровой и временной анимацией. Пример SWF на этой странице работает со скоростью 12 кадров в секунду, но, как вы можете видеть, нижний кружок сглаживается намного плавнее, поскольку он управляется таймером со скоростью 60 кадров в секунду и обновляет экран независимо от частоты кадров SWF. Однако имейте в виду, что даже таймер на частоте 60 кадров в секунду на самом деле Flash Player никогда не сможет достичь такой частоты кадров. Тем не менее, он попытается достичь такой частоты кадров, что приведет к гораздо более плавной анимации.

К сожалению, до сих пор я не смог выпустить версию 1.0 своей библиотеки, но насколько я знаю, она довольно стабильна. Вы можете использовать его так, как считаете нужным. Я использовал Coretween во многих коммерческих производствах, включая этот, который мы использовали для банка StGeorge здесь, в Австралии.

2 голосов
/ 30 мая 2009

Вот несколько библиотек анимации на основе ActionScript:

TweenMax

Tweener

Они оба работают хорошо и должны помочь вам с тем, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...