You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 22:13:11