Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3中的嵌套缩放问题_Javascript_Svg_D3.js - Fatal编程技术网

Javascript D3中的嵌套缩放问题

Javascript D3中的嵌套缩放问题,javascript,svg,d3.js,Javascript,Svg,D3.js,请看我的小提琴: 可以按住SHIFT键,然后拖放矩形以移动矩形及其内部的圆。您还可以按住SHIFT键和zoom键。此缩放/平移由d3.behavior.zoom()完成。效果很好 我想在不按住shift键的情况下缩放和平移圆。因此,我创建了另一个d3.behavior.zoom()。但是,圆可以缩放,但不能平移。通过调试,我发现当我平移圆时,处理代码不会执行 总之,当将zoom绑定到外部g元素和内部g元素时,外部可以很好地进行缩放/平移;但是,内部仅适用于缩放。如何让它也为pan工作?我找到了答

请看我的小提琴:

可以按住SHIFT键,然后拖放矩形以移动矩形及其内部的圆。您还可以按住SHIFT键和zoom键。此缩放/平移由
d3.behavior.zoom()
完成。效果很好

我想在不按住shift键的情况下缩放和平移圆。因此,我创建了另一个
d3.behavior.zoom()
。但是,圆可以缩放,但不能平移。通过调试,我发现当我平移圆时,处理代码不会执行


总之,当将
zoom
绑定到外部
g
元素和内部
g
元素时,外部可以很好地进行缩放/平移;但是,内部仅适用于缩放。如何让它也为pan工作?

我找到了答案的解决方案

当我平移圆时,它的
缩放
事件不会触发。但是,它的
zoomstart
事件会激发,并且在其父级的
zoomstart
之前激发。不知何故,当父对象的
zoomstart
启动时,它会吃掉圆的事件

因此,在圆的
zoomstart
中,我强制事件在SHIFT未被保持时停止传播。这使得圆
缩放
激发