2011-09-08 73 views
0

我正在構建一個滾動條。當達到最大值/最小值時,滾動條按鈕抖動

在MouseDown上,我啓動了一個重複定時器來定位滾動條按鈕(滑塊)。 當它達到最小值/最大值時,它會發生抖動(在最小/最大值和stage.mouseY之間切換) 我該如何預防?

private function onTime(e:TimerEvent):void 
    { 

     if(this._scrollBtn.y < min) 
     { 
      this._scrollBtn.y = min; 
     } 
     else if(this._scrollBtn.y > max-this._scrollBtn.height) 
     { 
      this._scrollBtn.y = max-this._scrollBtn.height; 
     } 
     else 
     { 
      this._scrollBtn.y = stage.mouseY; 
     } 
    } 

回答

0

我建議監聽MouseEvent.MOUSE_MOVE而不是使用定時器,這樣,你只是在做的工作,如果當鼠標移動。

您的問題很可能是您在滾動條處於「移動」之後驗證滾動條的位置,讓它在下一次更新到來之前超出邊界一段時間並將其移回。

到處都有this沒有理由,除非明確需要。

private function onTime(e:TimerEvent):void 
{ 
    _scrollBtn.y = stage.mouseY; 

    if(_scrollBtn.y < min) 
    { 
     _scrollBtn.y = min; 
    } 
    else if(_scrollBtn.y > max - _scrollBtn.height) 
    { 
     _scrollBtn.y = max - _scrollBtn.height; 
    } 
} 
+0

謝謝,解決了!根據「this」:我使用它來更快地識別類變量......您認爲有什麼缺點嗎? – algro

+0

我不認爲這樣做有任何運行時速度,因爲我認爲_underscore意味着它是一個私有變量,它只是真的意味着更多的輸入。但是,最終這是一個品味的問題,所以做你認爲最好的事! – grapefrukt

相關問題