AS3中的加速和减速

时间:2010-10-28 11:45:06

标签: flash actionscript-3 rotation physics tween

在我的Flash文件中,我有一个轮子。用户可以通过使用箭头跳转到下一个“段”来旋转车轮(想想相互连接的20个图像,形成车轮的圆周)。 Wheel

单击箭头会启动此代码:

protected function rotate():void
        {
            var rotateTo:Number = (-360 / numItems) * currentItem + 90;
            TweenLite.to(planesHolder, 1, { rotationY:rotateTo, ease:Quint.easeInOut } );
        }

然而,我想要做的是,点击并拖动以旋转车轮,完成加速和减速,甚至在车轮减速到一定速度时稳定在最近的图像上。我不知道该怎么做:我需要检测光标的前后位置并将其转换为车轮的速度,然后随着时间的推移减速,并检测哪个图像最接近某个速度和“快速”它,都向上和向下滚动。 (它只会影响Y轴)

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

当鼠标停止时,在Enter_frame中检查当前偏移到前一个位置:

private function enterFrameHandler(e:Event)
{
  offset = oldy - oldMousePosition;
  oldy = oldMousePosition
}

这应该给你当前的速度。 (显然,对于方向盘,它再次在enterFrame中“wheel.rotation + = offset / some_value_to_slow_it_down”)。

引入“缓和”你可以使用摩擦变量。

再次,在enterFrame事件中:

offset *= .8;

然后为了捕捉到下一张图像,请检查当前速度的速度;如果它低于某个公差,则将速度设置为0并将其缓和到最接近的值。 (你猜对了,再次在enterFrame事件中

if(offset < 1)
{
  offset = 0;
  //calculate the nearest value of the wheel
  //tweenlite right over there
}