我正在构建一个滚动条。
在MouseDown上我启动一个重复计时器来定位Scrollbar-Button(Slider)。 当它达到最小值/最大值时它会抖动(在最小值/最大值和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 :(得分: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;
}
}