Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.03.2008, 21:28
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 1  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
По умолчанию Виды анимации: сравнение

На сколько мне известно, во флэш таковых существует 4: с помощью onEnterFrame, SetInterval, tween-анимация и где-то в глубинах сайта промелькнуло что-то про классы. Очень хотелось бы узнать их отличия: преимущества и недостатки друг перед другом.
Например многие пишут что onEnterFrame и SetInterval при анимации большого количества объектов использовать не рекомендуется, мол будет тормозить на старых машинах. На сколько старые при этом должны быть машины и сложной анимация, что б они при этом тормозили? (или то статьи очень древние?)
Может еще есть какие нюансы. Заранее спасибо.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 15.03.2008, 21:51
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Речь идет только о программной анимации или и таймлайн тоже?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 15.03.2008, 22:02
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 3  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Программной. Но если попутно будет дано сравнение и для тайм-лайн, буду только за. Информация лишней не бывает.
ЗЫ. Будет подробное сравнение для потомков
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 16.03.2008, 22:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
В флеше возможны два вида анимации: таймлайн анимация и программная анимация.
------
При таймлайн анимации, на тамлайне указываются только ключевые кадры с объектами, а флеш, в момент компиляция и в зависимости от типа ТА, сам формирует промежуточные кадры методом интерполяции, и в результате в swf хранится информация о содержимом каждого кадра анимации. Таким образом, анимация просчитывается лишь единожды, что уменьшает потребление ресурсов при воспроизведении, однако ее уже невозможно изменить.

ТА может быть двух типов: motion-tween и shape-tween.

Поскольку motion-tween оперирует с символами, то в ключевых кадрах должен находится один и тот же символ и при интерполяции промежуточных кадров, сама форма внутри символа не меняется, меняются лишь свойства символа: координаты, размеры, углы поворота, сдвиги, цвет и прозрачность. Также МТ имеет возможность пускать объект по кривому и сложному пути.

А вот shape-tween оперирует непосредственно с вершинами форм, что дает возможность морфинга - плавное перетекание одной формы в другую в течение промежуточных кадров.

Однако разное количество вершин в ключевых формах и их положение (флеш пытается двигать вершины по кратчайшему пути), может дать нам совсем не тот визуальный ряд, который мы планировали. Поэтому при shape-tween сложные формы стоит разбить на более простые и в разных слоях, доведя разницу между количеством вершин до минимума, а также указать их порядок в ключевых формах (с помощью shape hint).

Фактически, у motion-tween и shape-tween разная область применения, первый хорош для анимации объекта (символа) в пространстве, а второй для анимации формы символа. Однако у shape-tween есть один минус, поскольку в каждом кадре анимации создается абсолютно новая форма, то в зависимости от ее сложности, размер swf файла может сильно возрасти. А вот МТ на протяжении всей анимации использует один и тот же объект, поэтому расходы на размеры не так уж и велики.
------
В отличие от таймлайн анимации, программная анимация является динамической анимацией, что дает возможность менять ее на ходу, и все изменения рассчитываются в момент выполнения swf. Это положительно влияет на размер при длительной анимации, но за счет потребления дополнительных ресурсов.

Как и в таймлайн анимации, в программной анимации возможны те же два типа анимации. Однако, если реализация motion-tween весьма проста, то shape-tween требует персонального подхода к каждой задачи (сам механизм везде тот же, это удаление старого изображения и рисование нового с помощью moveTo, lineTo, curveTo и заливок), а различное количество вершин может сделать задачу трудновыполнимой, поэтому затронем только motion-tween.

Анимация делится на два шага:
1. Расчет изменений свойств и трансформация
2. Вывод результата на экран

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

Поскольку сам смысл анимация это постоянные изменения, а функции с расчетом запускается лишь единожды, то нужно что-то, что будет брать на себя периодический запуск.
Есть два варианта:
1. onEnterFrame
2. setInterval
Довольно часто новички допускают ошибку считая, что цикл for тоже может в этом помочь, однако это не так, так как при for не выполняется второй шаг.

В обычном режиме флеш обновляет содержимое экрана согласно фпс, и то не весь экран, а только определенные фрагменты, которое изменились. Причем сначала выполняется весь код данного кадра, а лишь потом происходит обновление экрана.
С onEnterFrame все понятно, он работает согласно текущему фпс. А setInterval как был задан - может быстрее, а может медленнее. Однако обновление экране все равно происходит по фпс. То есть, если у вас фпс равен 1, а setInterval был запущен на 250 мс, то он сработает 4 раза (теоретически) за секунду, а обновление произойдет лишь один раз. Однако есть метод updateAfterEvent, который принудительно обновляет экран, и тем самым заставит setInterval 4 раза показать результат своих действий. Или, есть при фпс 1, а setInterval был запущен с повтором каждые 4000 мс, то обновление анимации произойдет только 1 раз за 4 кадра.
Поэтому, если вас удовлетворяет текущий фпс, то лучше анимацию вешать на onEnterFrame, если нужно быстрее, то на setInterval, но учитывать, что это повлечет большую нагрузку, что может привести к падению самого фпс, или медленнее, то тоже на setInterval, однако расход ресурсов будет медленнее.
setInterval имеет еще один плюс - скорость анимации можно динамически менять.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.03.2008, 23:16
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
хелп:
Цитата:
Flash ignores calls to updateAfterEvent that are not within an onClipEvent() handler or part of a function or method passed to setInterval().
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 18.03.2008, 01:23
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 6  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Т.е. я так понял, программная твин-анимация - это по сути практически тоже самое что и обычная твин анимация, разница лишь в способе создания? И я так понимаю, что в большинстве случаев программная анимация предпочтительней, если не способствует значительному геморрою у разработчика. Про Fuse что-то не понял. Хелп по крайней мере мне такого слова не выдал.

ЗЫ. Огромное спасибо за практически статью. Я и потомки будут благодарны пока будет жив этот ресурс: многих лет ему существования в здравии и посещаемости
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 18.03.2008, 01:30
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Т.е. я так понял, программная твин-анимация - это по сути практически тоже самое что и обычная твин анимация, разница лишь в способе создания?
Нет. Программая анимация считается каждый раз при воспроизведении, а обычная только при компиляции.
Цитата:
И я так понимаю, что в большинстве случаев программная анимация предпочтительней, если не способствует значительному геморрою у разработчика
Зависит от задачи. Если вам нужна динамика, то используется программная анимация или если движение проще описать математически по формуле. Во всех других случаях, обычная анимация лучше и быстрее.

Цитата:
Про Fuse что-то не понял. Хелп по крайней мере мне такого слова не выдал.
Это фрейморк. Такой же как и Tween, только Tween включен в дистибутив флеша, а Fuse - нет.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:29.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.