AS3 Tween类和泛效果

时间:2012-03-06 19:33:54

标签: actionscript-3 flash actionscript tween

我试图在闪光灯(as3)中制作一个“平移”效果(我不确定这是否是平移),你的图像大于显示它的面具(只是水平)。这是一个非常简单的效果,但我遇到了补间问题。

首先,我尝试使用补间类。但它最终弄乱了补间的速度(您设置补间的帧或秒的参数)。 “begin”参数很容易,是对象的x值,无论它在哪里。 “end”参数也很容易,是0或图像的结尾,这取决于你是在左边还是右边的按钮(当你在这些按钮上时补间开始,当你离开它们时结束了stopTween或者当补间结束时)。我面临的问题是“持续时间”参数:我想在所有补间中使用相同的速度,无论开始时间是多少。显然,如果我放一个静态值,如果我在图像的中间,速度会降低一半。

所以我想弄清楚如何创建一个算法来做到这一点。我首先尝试计算图像的哪个百分比是当前的“x”值:

如果我达到50%,则将补间设置为50帧。

如果我达到90%,则将补间设置为10帧。

如果我是20%,则将补间设置为80帧。

但我认为应该有办法让它变得更容易。也许我弄错了,补间班不是我需要的......我只是试图产生一个位移效果,总是以相同的速度(虽然在达到速度之前容易进出)更大)。

关于此的任何想法或有用的链接?我看了很多教程,但行为不同,主要与鼠标位置有关。

提前感谢!

3 个答案:

答案 0 :(得分:0)

你想:

duration = (end - begin) / pixels_per_ms

答案 1 :(得分:0)

为什么不使用补间类的ease属性?看看http://www.greensock.com

您可以在TweenMax页面上试用一个有用的示例窗口小部件。

答案 2 :(得分:0)

实现这种效果的更好方法是测量速度/超过/距离这个公式将更容易和更少的代码。这样做你不需要任何补间库。

 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)文件