2010-10-28 134 views
0

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

点击箭头启动此代码:

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

不过,我希望能够做的是,单击并拖动以旋转的车轮,完成加速和减速,甚至在定居当车轮减速到一定速度时,最近的图像。我不知道该如何去做这件事:我需要先检测光标的前后位置,然后将其转换为车轮的速度,然后随着时间减速并检测哪个图像在某个特定位置速度和“捕捉”它,无论是上下滚动。 (它只会影响到Y轴)

任何帮助,将不胜感激

回答

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 
}