Vasturiano 3d-force-graph节点悬停与右键点击功能实现求助
3d-force-graph 问题解决方案
问题1:仅为含link字段的节点显示悬停文本
在.onNodeHover的回调逻辑中增加字段判断,仅当节点存在link属性时返回悬停文本,否则返回null即可实现需求。
示例代码:
graph.onNodeHover(node => { // 只有节点包含link字段时才返回悬停内容,否则不显示 return node?.link ? `节点:${node.name}` : null; });
问题2:保留左键相机重定位,右键打开节点链接
通过监听节点的鼠标按下事件(onNodeMouseDown),区分鼠标按钮类型执行不同操作:左键触发相机定位,右键阻止默认菜单并打开链接。
示例代码:
graph.onNodeMouseDown((node, event) => { if (event.button === 2) { // 右键操作:打开链接(需确保节点存在link字段) event.preventDefault(); // 屏蔽默认右键菜单 node?.link && window.open(node.link, '_blank'); } else if (event.button === 0) { // 左键操作:相机平滑定位到节点位置 const camDistance = 200; // 可调整相机与节点的距离 const distRatio = 1 + camDistance / Math.hypot(node.x, node.y, node.z); graph.cameraPosition( { x: node.x * distRatio, y: node.y * distRatio, z: node.z * distRatio }, node, 300 // 动画过渡时长(毫秒) ); } }); // 阻止画布默认右键菜单,避免干扰操作 graph.canvas().addEventListener('contextmenu', e => e.preventDefault());
内容的提问来源于stack exchange,提问作者greg.gan
相关产品推荐
相关产品推荐

