是否可以使用非鼠标、非触摸事件与 D3.js 图形进行交互?如果是这样,最有效的方法是什么
Is it possible to use non-mouse, non-touch events to interact with a D3.js graph? If so, what is the most efficient way to go about it?
我没有使用鼠标,而是使用Leap Motion。它是一种运动感应设备,允许使用手指、手和手势而不是鼠标。
我有代码绘制用户手指与屏幕相交的点,因此用户的手指在网页上由蓝色圆圈表示(与此代码相同:http://schnipz.github.io/leap-motion-demos/d3.js/index.html)。
我在网页上还有一个力导向图,与此示例相同:bl.ocks.org/mbostock/4062045
我想允许用户在手指(蓝色圆圈)与节点相交时"拖动"节点。
我能够让点击模拟代码工作,但是当我尝试使用 X 和 Y 位置时,例如......
function mouseSim(type, x, y)
{
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent(type, true, true, window, 1,
x, y,
x, y, false,
false, false, false, 0/*left*/, null);
document.dispatchEvent(simulatedEvent);
console.log(type + " at " + x + ", " + y);
}
我得到了所需的控制台输出,但没有与图形发生交互。
是否可以使用非鼠标、非触摸事件与 D3.js 图形进行交互?如果是这样,最有效的方法是什么?
它像以下一样简单吗:
function mouseSim(type, x, y)
{
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent(type, true, true, window, 1,
x, y,
x, y, false,
false, false, false, 0/*left*/, null);
document.dispatchEvent(simulatedEvent);
console.log(type + " at " + x + ", " + y);
doStuffInD3(x,y);
}
function doStuffInD3 (x,y) {
force directed stuff dependent on x and y
}
在交互之后,您只是将 x 和 y 传递给力函数?
您实际上不需要模拟事件来实现此目的(模拟事件可能会使它比需要的更难一些)。您只需将可指向的跳跃匹配,将其fixed
属性设置为 true 以防止力布局更新其位置并根据可指向的运动移动节点。
如果我正确理解你在做什么,我想我已经在这里实现了它。来源可在此处获得。
相关文章:
- node.js是否具有'match()'方法如果是,语法是什么
- 用于编写与我作为客户端查看的网页交互的脚本的术语(如果有的话)是什么
- 如果 JS 中的函数是一流的,那么在定义它们之前允许调用它们是什么
- 如果我返回表,检查 Ajax 调用是否为 200 OK的最佳方法是什么
- 使用Javascript客户端进行REST基本身份验证的安全缺陷是什么(如果有的话)
- 如果React.js是V,那么在MVC中,其他字母是什么
- 如果我只想从数组中打印任何一个元素.任何数组.那么代码会是什么
- 如果我使用xhr请求,那么ajaxComplete的等价物是什么
- 如果没有jQuery,这段代码的并行性是什么
- 使用方法和属性定义javascript对象的最佳方法是什么?(如果可能以本机方式)
- Javascript中的匿名函数和传统函数之间有什么内存使用差异吗?如果是这样,如何
- 如果控件位于活动的 RadPageView 中,Javascript 是什么?
- 使用引导程序居中和裁剪图像的正确方法是什么(如果需要,可以使用jquery)
- 修改 yii.activeForm 是个好主意吗.js如果不是,另一种方法是什么
- ASP.NET:如果(!IsPostback)在HTML中是什么
- 是否有可用于<对象>的Javascript“Evoke”函数 - 如果有,它是什么
- 如果警报已经存在,确保警报框不会弹出的最佳方法是什么
- Array.prototype.some() 是否返回文字?如果是这样,这段代码是什么意思
- 是否可以使用非鼠标、非触摸事件与 D3.js 图形进行交互?如果是这样,最有效的方法是什么
- 在 Django 中,根据视图名称动态加载一些 JavaScript 的更聪明的方法是什么(如果存在)