Интерблог

Эмуляция плавности в ActionScript.
Автор: Ognezmej. Опубликовано: 20 Апреля 2011

Предыдущие статьи рассматривали анимацию в двух аспектах - с одной стороны, удобство её создания и редактирования, с другой стороны - устойчивость и работоспособность в руках конечного пользователя. Увы, одно другому обычно противоречит, и чем-то приходится жертвовать.

Тем не менее, выходы и лазейки всегда найдутся. Рассмотрим простенький пример, как можно изобразить подобие плавного ухода элемента в ноль (fade out), не используя кадровую анимацию и не перегружая компьютер большим количеством одновременно выполняемых вычислений. Метод основан на том, что глаз человеческий воспринимает одновременно далеко не так уж много информации. 24 кадра в секунду, чтоб движение казалось плавным - аксиома кинематографа. Чтобы движение казалось хоть каким-то движением, достаточно двух-трёх кадров. Используем вот эту простенькую конструкцию:

my_clip._alpha = 50;
var mPause = setInterval (function ()
                {
                clearInterval (mPause);
                my_clip._alpha = 0;                
                my_function();               
                }, 300);

my_function - функция, которая запускается по окончанию нашей как-бы-анимации.
300 - это 300 миллисекунд, примерно треть секунды. Можете посмотреть, как оно работает с другими значениями.

Запускаем - объект уходит в сумрак быстро, но с некоторой иллюзией плавности - то, что нам и было нужно. Оказалось достаточно одного промежуточного кадра.

Попытаемся подытожить. Для создания сложного интерактивного ролика приходится сочетать разные варианты анимации. При простейших движениях без участия пользователя целесообразнее использовать программную анимацию. Когда возникает необходимость анимации при наведении мыши, используем все возможные методы, чтобы не перегружать машину вычислениями. Если анимация нескольких объектов идентична - оптимальным будет создание одного объекта, внутри которого будет находиться ещё один объект, выполняющий всю необходимую анимацию через tween. Этот самый внутренний объект представляет собой несколько кадров, в каждом из которых изображён один из объектов, которые надо анимировать. Далее внешний объект копируется, при этом внутренний при помощи gotoAndStop() устанавливается на соответствующий кадр. Там, где важна не сколько красота анимации, сколько её наличие, можно использовать эмуляцию через промежуточный кадр. И, разумеется, нейтрализуем быструю мышь посредством onEnterFrame.

 

Метки: ActionScript, Кодинг, Советы

Популярные записи

Принцип неопределённости в РНР

Принцип неопределённости в MYSQL

Недолёт

А ещё AJAX нужен для...

Принцип неопределённости в PHP - праздник продолжается!

Эмуляция плавности в ActionScript.

Программная анимация в ActionScript

Анимация при наведении в ActionScript

Использование кодировки UTF-8

Буквицца

Архив записей  

2019

Янв  

2018

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2017

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2016

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2015

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2014

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2013

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2012

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2011

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2010

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек

2009

Янв  Фев  Мар  Апр  Май  Июн

Июл  Авг  Сен  Окт  Ноя  Дек