Класс AS3 Tween и эффекты панорамирования

Я пытаюсь создать эффект «панорамирования» (я не уверен, что это панорама) во flash (as3), где у вас есть изображение больше, чем маска, на которой оно отображается (только по горизонтали). Это очень простой эффект, но у меня проблемы с подростками.

Сначала я попробовал с классом подростков. Но это закончилось беспорядком со скоростью анимации движения (параметр, в котором вы устанавливаете кадры или секунды анимации движения). Параметр "begin" прост, это значение x объекта, не имеет значения, где он находится. Параметр "end" тоже прост: 0 или конец изображения, в зависимости от того, находитесь ли вы на левой или правой кнопке (анимация движения начинается, когда вы находитесь над этими кнопками, и заканчивается с помощью stopTween, когда вы находитесь вне их или по окончании подросткового периода). Проблема, с которой я столкнулся, заключается в параметре «продолжительность»: я хочу, чтобы у всех подростков была одинаковая скорость, независимо от того, где она начинается. Очевидно, если я поставлю статическое значение, если я нахожусь в середине изображения, скорость снизится вдвое.

Итак, я пытаюсь понять, как создать алгоритм для этого. Сначала я попробовал вычислить, какой процент изображения является текущим значением «x»:

Если у меня 50%, сделайте анимацию в 50 кадров.

Если у меня 90%, сделайте анимацию в 10 кадров.

Если у меня 20%, сделайте анимацию в 80 кадров.

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

Любая идея или полезная ссылка об этом? Я видел много руководств, но с другим поведением, в основном связанным с положением мыши.

заранее спасибо!


person Jose Garcia    schedule 06.03.2012    source источник


Ответы (3)


Вы хотите:

duration = (end - begin) / pixels_per_ms
person Jacob Eggers    schedule 06.03.2012

Почему бы не использовать свойство легкости подросткового класса? Взгляните на http://www.greensock.com

На странице TweenMax есть полезный пример виджета, с которым вы можете поэкспериментировать.

person crooksy88    schedule 06.03.2012

Лучший способ достичь этого эффекта - измерить скорость / расстояние / расстояние, эта формула будет проще и требует намного меньше кода. Делая это таким образом, вам не понадобится какая-либо библиотека анимации.

 var MaskCenter=100;
 var speed=1/10;
 var distance=boxdummy.mouseX-MaskCenter;


if(mouseX<250){
box.x-=(distance*speed);
}
if (mouseX>250)
{
 box.x -= speed + accel;
}

Что-то такое!

Если у вас не получается сработать, дайте мне знать, я сделаю для вас (fla) файл

person joshua    schedule 14.03.2012