我用d3js创建了缩放行为
const zoom = d3
.zoom<SVGSVGElement, unknown>()
.filter(function (event) {
return event.which === 2 || event.type === 'wheel';
})
.scaleExtent([-10, 10])
.on('zoom', handleZoom);
如果我按下鼠标滚轮并移动鼠标,平移就可以工作,但在触摸板上,如果我把两个手指放在触摸板上并向同一个方向移动,我希望平移效果,但缩放却可以工作。是否有办法使用触摸板过滤平移事件?
x一个一个一个一个x一个一个二个一个x一个一个三个一个
我想将d3设置为通过滚动鼠标滚轮或在触摸板上放大/缩小来工作,并通过按住鼠标滚轮或在触摸板上以相同方向移动两个手指来平移工作
1条答案
按热度按时间thtygnil1#
您可以使用d3.event.sourceEvent属性检查触发缩放的事件类型。
例如,您可以检查事件是否为触摸事件,如果是,则可以检查触摸点的数量。如果触摸点的数量大于1,则可以将其视为平移事件并阻止缩放行为。
请改为执行以下操作:
使用此代码时,如果事件是触摸事件,并且触摸点的数量大于1,则函数将返回并且不应用缩放行为。