#1338·matter-js

afterRender事件相关问题

Author: guotaotao789Created Apr 12, 2025Updated Apr 12, 2025

// 渲染控制点 Events.on(render, "afterRender", () => { const ctx = render.context;

// 获取所有物体
const bodies = Composite.allBodies(engine.world);

// 如果 isBig 为 false,强制所有控制点不可见
if (!state.isBig) {
  bodies.forEach((body) => {
    if (body.controlPoints) {
      body.controlPoints.isSelected = false;
    }
  });
  return;
}

// 找到 zIndex 最高的物体
const topBody = bodies.reduce((prev, current) => {
  return (prev.render.zIndex || 0) > (current.render.zIndex || 0)
    ? prev
    : current;
}, bodies[0]);

// 只渲染最高层物体的控制点
if (topBody?.controlPoints) {
  topBody.controlPoints.isSelected = true;
  renderControlPoints(ctx, topBody, rotateIcon);

  // 确保其他物体的控制点不显示
  bodies.forEach((body) => {
    if (body !== topBody && body.controlPoints) {
      body.controlPoints.isSelected = false;
    }
  });
}

});我在这个事件中使用render.context画的控制点. 这个事件会一直执行 为什么啊 求解答