滚动条按钮达到最大值/最小值时抖动



我正在创建一个滚动条。

在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;
    }
}

最新更新