ActionScript 3:Плавная программная анимация

StackOverflow https://stackoverflow.com/questions/929749

  •  06-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Подростковый максимум

Твинер

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top