AS3 Tween класс и панорамирование - PullRequest
0 голосов
/ 06 марта 2012

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

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

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

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

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

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

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

Есть идеи или полезные ссылки по этому поводу? Я видел много учебных пособий, но с другим поведением, в основном связанным с положением мыши.

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

Ответы [ 3 ]

0 голосов
/ 06 марта 2012

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

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

0 голосов
/ 14 марта 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) файл для вас

0 голосов
/ 06 марта 2012

Вы хотите:

duration = (end - begin) / pixels_per_ms
...