AS3 - Использование Tween на целое число? - PullRequest
1 голос
/ 05 января 2012

Раньше я не использовал функции Tween, поэтому мне нужна небольшая помощь.

Я хочу анимацию между двумя целыми числами.

Пример: я буферизую 360 кадров (изображений).

Я хочу перейти к кадру 100 (из кадра 1), но я хочу использовать легкость, чтобы он выглядел лучше.

Все, что мне нужно, это объединить целое число, которое я буду использовать дляотображается текущее изображение.


Пока все хорошо, но я не понимаю, как обновить изображение в анимации:

        public function timerEvent(event:TimerEvent):void{
            TweenLite.to(this, 2, {_currentFrame: 50, ease:Strong.easeOut}); 

            if (_currentFrame>=358) _currentFrame -= 359;
            if (_currentFrame<0) _currentFrame += 359;
            var myBitmap:Bitmap = new Bitmap(buffer[_currentFrame+1]);
            myBitmap.smoothing = true;
            imageBuffer.data = myBitmap;
        }

1 Ответ

2 голосов
/ 05 января 2012

Я бы настоятельно рекомендовал использовать библиотеки Greensock TweenLite и TweenMax вместо встроенных функций Tweening.

http://www.greensock.com/tweenmax/

Прелесть этого в том, что вы можете анимировать любое числовое свойство объекта и применять замедление, и вы можете даже анимировать кадры мувиклипа напрямую, используя плагин Frames, встроенный в TweenMax:

import com.greensock.TweenMax;
import com.greensock.easing.Strong;

TweenMax.to(this,2,{frame:100,ease:Strong.easeOut});

To Tween значение счетчика так же просто, и поскольку для него не требуется плагин Frames, вы можете использовать более легкий TweenLite:

import com.greensock.TweenLite;
import com.greensock.easing.Strong;

var counter:int = 0;

TweenLite.to(this,2,{counter:100,ease:Strong.easeOut});

Изменить, чтобы включить новый код

Когда анимация запускается, вы можете записать событие обновления, которое позволяет вам выполнять действия с текущими значениями ваших параметров. Затем вы можете сделать что-то вроде этого:

TweenLite.to(this, 2, {_currentFrame: 50, ease:Strong.easeOut, onUpdate:updateCallback}); 

function updateCallback():void
{
    var myBitmap:Bitmap = new Bitmap(buffer[_currentFrame+1]); 
    myBitmap.smoothing = true; 
    imageBuffer.data = myBitmap;
}
...