我正在创建一个滚动条。
在MouseDown上,我启动一个重复计时器来定位滚动条按钮(滑块)。当它达到最小/最大时,它会抖动(在min/max和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;
}
}
我建议监听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;
}
}