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

Processing如何实现鼠标悬停时对应按钮单独高亮变色

问题根因
  • 全局共用同一个COLOR变量,修改后所有按钮颜色都会同步变更,无法实现单个按钮高亮
  • 悬停判断逻辑只适配了第一个按钮的坐标范围,没有对应每个按钮的实际横向位置
  • buttonX全局变量在每次draw()执行时没有重置,多次运行后按钮会绘制到画布外
修复方案

把按钮的坐标、颜色判断都收敛到单次按钮绘制逻辑里,不要用全局变量存储按钮坐标和颜色:

// 不需要弹窗的话可以删掉这行import
import javax.swing.JOptionPane;
final int BUTTON_WIDTH = 100;
final int BUTTON_HEIGHT = 50;

void setup() {
  size(800, 400);
}

void draw() {
  // 每次绘制前清屏,避免画面重叠
  background(255);
  for (int i = 0; i <= 8; i++) {
    // 直接通过索引计算当前按钮的X坐标,不需要全局变量存储
    int currentBtnX = i * BUTTON_WIDTH;
    drawButtons(currentBtnX);
  }
}

// 传入当前要绘制的按钮的X坐标
void drawButtons(int btnX) {
  strokeWeight(2);
  // 单独判断当前按钮区域是否被鼠标悬停
  if (mouseX >= btnX && mouseX < btnX + BUTTON_WIDTH && mouseY >=0 && mouseY < BUTTON_HEIGHT) {
    // 悬停时用高亮色
    fill(0, 255, 255);
  } else {
    // 普通状态用默认色
    fill(0, 150, 150);
  }
  rect(btnX, 0, BUTTON_WIDTH, BUTTON_HEIGHT);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:36:05