Программная анимация в ActionScript
Автор: Ognezmej. Опубликовано: 19 Апреля 2011
Спрашивается, нафига во Flash программная анимация, если есть tween и shape, позволяющие легко и непринуждённо производить большинство простейших изменений объекта?
Ответ кроется в самой постановке вопроса. Программная анимация нужна там, где работа с tween и shape занимает больше времени. Итак, представьте - нужно сделать разную анимацию нескольких разных объектов. Открываем каждый объект, добавляем туда кадры, прописываем состояние объекта в ключевых кадрах, прописываем события к тем или иным кадрам, если это нужно, выходим из объекта. И это с каждым. В случае, если не устраивает скорость или положение объекта во время анимации - опять заходим, меняем кадры, выходим. Даже, если анимация всех объектов абсолютно одинакова, в случае чего придётся редактировать каждый объект. Также возможна путаница с именами объектов, поскольку для удобства дальнейшей работы (но бабушка-то надвое) объект неподвижный помещается в объект с анимацией.
Кому-как, а мне рыться в монтажной линейке представляется занятием тоскливым до безнадёжности. Всё должно быть максимально автоматизировано.
А теперь представим себе программный путь. Размещаются объекты, пишется одна или несколько функций (а ещё проще - копируются готовые), и для каждого объекта - одна-две строчки в коде. А если анимация одинаковая или аналогичная - циклический перебор или что-то в этом роде. Изменение анимации происходит изменением параметров функций, всё делается в одном окне.
Для примера возьмём функцию fade, позволяющую плавно менять прозрачность объекта
MovieClip.prototype.fade = function (speed,limit,after)
{
var interval = Math.round(1000/speed);
var grow = (this._alpha<limit);
var Go = setInterval(function(obj) {
var stopFade = false;
if (grow && obj._alpha>=limit) stopFade = true;
if (!grow && obj._alpha<=limit) stopFade = true;
if (stopFade)
{
clearInterval (Go);
obj._alpha = limit;
if (after!=false) after.call();
}
else
{
if (grow) obj._alpha++;
else obj._alpha--;
}
}, interval, this);
}
Параметры:
speed - скорость изменения,
limit - уровень альфы, который должен получиться в итоге
after - самое главное - функция, которая запускается по завершению анимации - чтобы можно было отследить это самое завершение. Можно применять любую пользовательскую функцию.
Например, mc.fade(100,0,function(){trace('анимация завершена');}) - объект уходит в ноль, после чего выдаётся сообщение о завершении анимации.
Разумеется, у программной анимации есть и множество недостатков. Для каждого нового вида анимации нужно писать новую функцию или разрабатывать универсальную для всех, разнообразие будет всё равно меньше, чем у кадровой анимации, и, наконец, самое страшное - программная анимация жрёт ресурсы компьютера, и эффект быстрой мыши, о котором говорилось в прошлой статье, проявляется гораздо ярче.
Поэтому - правило - всему своё время и место. Используйте ту анимацию, которая более уместна в данной ситуации. Программная анимация больше подходит для простых изменений, не зависящих от действий пользователя.
Метки: ActionScript, Кодинг, Советы
Комментарии
asxyrujvea
31 Августа 2011 в 19:21
kQ36h2 , [url=http://ipounjsxyzfh.com/]ipounjsxyzfh[/url], [link=http://vudinmfldkdg.com/]vudinmfldkdg[/link], http://vcpmbhehpdbl.com/
Добавить комментарий
Популярные записи
Принцип неопределённости в РНР
Принцип неопределённости в MYSQL
Эмуляция плавности в ActionScript.
Программная анимация в ActionScript
Анимация при наведении в ActionScript
Принцип неопределённости в PHP - праздник продолжается!
Облако тегов
ActionScript Ajax CMS jQuery MYSQL PHP XHTML Анализатор Канализатор Кодинг Мяу Продвижение Советы Студия Яндекс
