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

为何Processing代码无法逐个生成方块,而是一次性填满画布?

问题原因
  • Processing的draw()函数默认每帧执行一次,你将全部方块的绘制逻辑放在了draw()内部的嵌套循环中,第一次执行draw()时,循环就会一次性跑完10行共100个方块的绘制,因此看不到逐个生成的过程。
  • 你设置的frameRate(1)仅控制draw()每秒执行1次,但无法限制单帧内的循环执行逻辑,因此帧率设置没有起到控制生成间隔的作用。
修改后可实现需求的代码
void setup() {
  size(600,600);
  background(0);
  fill(255); // 设置方块填充色,避免和黑色背景重合
  frameRate(1); // 此处数值控制每秒生成的方块数量,调大可加快生成速度
}
int xCoord = 0;
int y = 0;
int total = 100; // 总共有10行*10列共100个方块
int drawn = 0;

void draw() {
  // 全部方块绘制完成后停止运行
  if (drawn >= total) {
    noLoop();
    return;
  }
  // 每帧仅绘制1个方块
  rect(xCoord, y, 60, 60);
  drawn++;
  // 更新横坐标
  xCoord += 60;
  // 单行填满后切换到下一行
  if (xCoord >= width) {
    xCoord = 0;
    y += 60;
  }
}
核心修改说明
  • 移除draw()内的嵌套循环,利用draw()本身的帧刷新机制控制生成间隔,每帧仅执行一次单个方块的绘制逻辑
  • 新增已绘制方块计数,绘制完成后调用noLoop()停止draw()执行,减少不必要的资源消耗
  • 每次绘制完成后判断当前行是否填满,自动切换到下一行,实现逐行排列的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:15:04