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

Processing中将多个自定义形状设为可点击按钮的合理实现方案咨询

Processing实现DHD不规则梯形按钮点击检测方案

你的需求完全可以在Processing中实现,以下是两种成熟的落地路径,都可以避免手动逐个校验坐标:

方案1:颜色拾取检测(优先推荐,适配你的现有代码)

这是处理大量自动生成不规则形状点击的最优方案,实现逻辑非常简单:

  • 用createGraphics()创建一个和画布尺寸完全一致的离屏缓冲层
  • 给每一个梯形分配唯一的无重复RGB颜色值,比如第1个梯形对应color(255,0,0)、第2个对应color(255,0,1),以此类推,把颜色值和梯形ID做一个映射表
  • 每次画布渲染时,同步在离屏缓冲层绘制所有梯形:缓冲层里的梯形只填充对应唯一纯色,不要加描边、渐变、光影等任何特效,和显示层的视觉绘制完全隔离
  • 鼠标点击时直接调用缓冲层对象.get(mouseX, mouseY)获取点击位置的颜色,匹配映射表就能直接拿到对应的梯形ID,完全不需要做坐标计算
  • 该方案性能开销极低,哪怕几百个按钮也不会有卡顿,而且你现有500行自动生成的形状代码只需要批量加颜色映射逻辑,改造量极小

方案2:PShape实例遍历检测

如果你后续需要给按钮加悬停、点击动效,可选择该方案:

  • 把散写的beginShape()/endShape()代码批量重构,每个梯形生成一个独立的PShape实例,所有实例统一存入ArrayList<PShape>集合
  • 鼠标点击时遍历集合,调用PShape.contains(mouseX, mouseY)方法即可直接判断点击是否命中当前形状
  • 你这个场景最多只有几十上百个梯形,遍历检测的性能消耗可以忽略,完全不会出现卡顿问题

落地建议:优先选择颜色拾取方案,不需要修改现有形状的顶点参数,只需要新增映射逻辑和离屏缓冲层绘制逻辑即可,最快几小时就能完成功能开发。

内容的提问来源于stack exchange,提问作者ThePatchelist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:36:01