简体   繁体   English

如何防止元素接触/碰撞jointjs?

[英]How can I prevent elements from touching/colliding in jointjs?

我正在使用jointjs创建一个交互式流程图应用程序,有没有一种方法可以防止元素被拖到另一个顶部?

You can revert the position of an element when the user finishes dragging and overlap is found. 当用户完成拖动并找到重叠时,可以还原元素的位置。

paper.on({
    'element:pointerdown': (elementView, evt) => {
        // store the position before the user starts dragging
        evt.data = { startPosition: elementView.model.position() };
    },
    'element:pointerup': (elementView, evt) => {
        const { model: element } = elementView;
        const { model: graph } = paper;
        const elementsUnder = graph.findModelsInArea(element.getBBox()).filter(el => el !== element);
        if (elementsUnder.length > 0) {
            // an overlap found, revert the position
            const { x, y } = evt.data.startPosition;
            element.position(x, y);
        }
    }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM