2010-10-28 64 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 
}