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

Processing动画开发疑问:程序片段单次执行与单个形状描边设置

问题解答

1. 让程序中某段代码仅执行一次

用布尔变量做开关控制执行状态即可,步骤如下:

  • 声明一个布尔变量,初始值设为false(标记代码未执行)
  • 在触发事件(比如mousePressed())里,判断变量是否为false,若是则执行目标代码,同时把变量设为true,后续触发就不会再执行这段代码

示例代码(Processing环境):

// 标记背景是否已切换的开关
boolean backgroundSwitched = false;

void setup() {
  size(400, 400);
  background(255); // 初始白色背景
}

void draw() {
  // 这里放你的动画循环代码
}

void mousePressed() {
  if (!backgroundSwitched) {
    background(100); // 切换为灰色背景
    backgroundSwitched = true; // 标记已执行,后续不再触发
  }
}

2. 为单个特定形状添加边框

Processing的绘制状态会持续保留,必须在绘制每个形状前明确设置stroke()或noStroke()才能精准控制。正确做法:

  • 绘制目标形状前,调用stroke()设置边框颜色
  • 绘制完目标形状后,立即调用noStroke()关闭边框,再绘制其他不需要边框的形状

示例代码(Processing环境):

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

void draw() {
  background(255);
  
  // 第一个圆形:显示黑色边框
  stroke(0);       // 设置边框颜色为黑色
  fill(255);       // 设置填充色为白色
  ellipse(100, 200, 80, 80);
  
  // 关闭边框,绘制剩下的两个圆形
  noStroke();      // 取消边框设置
  fill(200);       // 设置填充色为浅灰色
  ellipse(200, 200, 80, 80);
  ellipse(300, 200, 80, 80);
}

如果之前代码没生效,大概率是没在draw()循环内重置绘制状态——draw()每帧都会执行,上一帧的stroke状态会延续到下一帧,必须每次绘制时明确指定状态。

内容的提问来源于stack exchange,提问作者Ohio's Strongest

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:50:35