我正在基于Mike Bostock's code here.实现d3的画笔行为
jsfiddle version

我希望笔刷仅适用于鼠标事件,而不适用于触摸事件。我尝试了这个:

function brushended() {
    if (d3.event.sourceEvent && d3.event.sourceEvent.type != "mouseup") return;
    // Code for zooming
    // ...
}


现在,Touch会创建画笔矩形,但不会做其他任何事情。因此,我的目标已经实现了一半。这就是我想要的:在触摸设备上,应该完全忽略画笔,而触摸应该执行其默认行为(例如,touchmove用于滚动,两指用于缩放)。

最佳答案

为您的brush添加过滤器:

var brush = d3.brush().filter(() => event instanceof MouseEvent).on("end", brushended)


这只会激活MouseEvent的画笔,而忽略TouchEvent

关于javascript - 需要d3笔刷才能在触摸设备上不工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43621814/

10-11 22:36
查看更多