2012-03-06 64 views
0

我试图做一个“泛”效果(我不知道这是泛)在闪光灯(as3),你有一个图像比它显示的面具大(只是水平)。这是一个非常简单的效果,但我在补间中遇到麻烦。AS3吐温类和泛效应

首先,我尝试了补间类。但是它最终导致了补间速度(设置补间帧数或秒数的参数)的速度。 “begin”参数很容易,是对象的x值,不管它在哪里。 “end”参数也很容易,也可以是0或图像的结尾,具体取决于您是在左侧还是右侧按钮(当您离开这些按钮时,补间开始,当您离开时按钮停止,当补间结束时)。我面临的问题是“持续时间”参数:我希望所有补间中的速度相同,无论它在哪里开始。很显然,如果我放置一个静态值,如果我处于图像中间,速度会降低到一半。

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

如果我在50%,请在50帧内制作补间。

如果我在90%,请在10帧中填写补间。

如果我在20%,请在80帧内制作补间。

但我认为应该有一种方法来使它更容易。也许我错了,补间班不是我所需要的......我只是试图产生位移效应,总是以相同的速度进行(尽管直到达到速度时进出缓冲将是更大)。

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

在此先感谢!

回答

0

你想:

duration = (end - begin)/pixels_per_ms 
0

为什么不使用吐温类的轻松财产?看看http://www.greensock.com

有一个有用的示例小部件,您可以在TweenMax页面上进行试验。

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