将节点的移动限制在单个轴上

Constraining movement of a node to a single axis

如何使用 Cytoscape.js,将节点的移动限制在单个(即 x 或 y)轴上?我希望能够做到这样一个节点只能垂直或水平拖动,但不能同时拖动。换句话说,我想锁定一个节点,但只能锁定在一个轴上。我不确定这是否可行,并且无法在文档中找到任何具体提到这一点的内容,所以我想我会问。

提前致谢!

我最终想出了一种方法来近似我想要的结果,方法是侦听每个节点的 free 事件,并将其位置设置为我需要的位置。这不会将节点的 拖动 限制到单个轴,但它确实将节点的 拖放 限制到单个轴,如果这有意义的话。

这是 free 事件的 Cytoscape.js 描述:

free : when an element is freed (i.e. let go from being grabbed)

来自:http://js.cytoscape.org/#events/collection-events

使用 automove 扩展,它允许您根据需要对节点定位设置任何限制。限制 x 值就像将 (x, y) => { return { xConst, y }; } 函数传递给扩展一样简单。