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

Processing定时循环绘制:实现背景每5秒变绿2秒的问题求助

问题分析与解决方案

原代码存在几个关键问题:

  • time变量初始化时机错误,全局作用域中调用millis()时程序未启动,值为0
  • circle()函数缺少半径参数,会触发编译错误
  • 逻辑未实现「每5秒变绿、持续2秒后恢复」的循环效果,仅会单次触发背景变色

以下是修正后的代码:

color GREEN = #1fa81f;
color DEFAULT_BG = #000000;
long lastSwitchTime;
boolean isGreenBackground = false;

void setup(){
  size(650, 800);
  background(DEFAULT_BG);
  lastSwitchTime = millis(); // 初始化切换时间为程序启动时刻
}

void draw(){
  // 修复circle函数,添加半径参数(示例设为50,可自行调整)
  circle(mouseX, mouseY, 50);
  
  long currentTime = millis();
  long timeElapsed = currentTime - lastSwitchTime;
  
  // 根据当前背景状态判断是否切换
  if (isGreenBackground) {
    // 绿色背景持续2秒后切回默认
    if (timeElapsed >= 2000) {
      background(DEFAULT_BG);
      isGreenBackground = false;
      lastSwitchTime = currentTime;
    }
  } else {
    // 默认背景持续5秒后切换为绿色
    if (timeElapsed >= 5000) {
      background(GREEN);
      isGreenBackground = true;
      lastSwitchTime = currentTime;
    }
  }
}

逻辑说明

  • 用isGreenBackground跟踪当前背景状态,lastSwitchTime记录上次切换的时间点
  • 在draw()循环中计算时间差:
    • 默认背景下累计5秒触发变色
    • 绿色背景下累计2秒触发恢复默认背景
  • 补全circle()函数的参数错误,确保程序正常编译运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:42:32