Skip to content

afterRender事件相关问题 #1338

@guotaotao789

Description

@guotaotao789

// 渲染控制点
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画的控制点. 这个事件会一直执行 为什么啊 求解答🙏

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions