【问题标题】:Limit scroll ability on HTML5 canvas elements限制 HTML5 画布元素的滚动能力
【发布时间】:2016-05-19 12:59:17
【问题描述】:

我在画布上绘制了一系列矩形,并使用滚动事件侦听器来上下移动框。

我正在尝试添加一些验证,以便框不能滚动超过某个点。

由于加速,滚动值并不总是递增 1,所以当快速滚动时,有时我的验证启动得太早了。

有什么办法解决这个问题吗?

所以在我的事件监听器中我有:

lScroll += e.deltaY;

if (lScroll > 0) {
    canScroll = false;
    lScroll = 0;
} else {
    canScroll = true;
}

https://jsfiddle.net/kr85k3us/3/

【问题讨论】:

  • 也许你可以使用getBoundingClientRect()

标签: javascript html canvas html5-canvas


【解决方案1】:

请检查这是否适合您:https://jsfiddle.net/kr85k3us/4/

我测试了它,它应该可以工作,但也许你可以更快地移动鼠标滚轮:)

if (!canScroll && lScroll == 0) {
    var first = Object.keys(boxes)[0];

    if (boxes[first]['y'] < 10) {
        var delta = 10 - boxes[first]['y'];
        Object.keys(boxes).forEach(function(k){ boxes[k]['y'] += delta; });
    }
}

这是我添加的一段代码。如果不能滚动并且lScroll 为0,则表示我们到达了顶部。接下来,我检查第一个框是否在它应该在的位置。如果不是(即boxes[first]['y'] &lt; 10),那么它会调整所有框的y 位置。

【讨论】:

  • 完美运行!非常感谢
  • 很高兴它有帮助! :)
猜你喜欢
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 2012-03-13
  • 2011-03-01
  • 2012-06-30
  • 2012-06-13
  • 2014-03-17
  • 2012-12-31
相关资源
最近更新 更多