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

Processing中移动天花板瞬现瞬消问题求助

问题根源
  1. 清屏导致瞬间消失:draw()函数里每次都执行background(255)清空画布,灰色天花板只在10秒触发间隔的那一帧被临时绘制,下一次draw执行清屏后就不再渲染它,所以看起来瞬间消失。
  2. 状态未持久化:你没有把天花板的下降状态存在Ceiling类中,只是在触发间隔时临时画一次,没有保存当前应该显示的位置/高度,后续帧无法持续渲染。
  3. 重复逻辑与状态混乱:Ceiling类内部和主函数各有一套10秒间隔判断,会导致重复触发;同时类内和主函数各有一个amount变量,数据不统一,进一步加剧状态混乱。
修正方案

1. 重构Ceiling类,维护自身状态

把天花板的下降偏移量作为类的属性,每次触发间隔时更新属性,draw方法根据属性持续绘制:

class Ceiling {
  float width, height, currentTime, intervalo;
  float ceilingY; // 记录灰色天花板的当前y坐标,初始在y=50位置

  Ceiling(float width, float height) {
    this.width = width;
    this.height = height;
    this.currentTime = 0;
    this.intervalo = 10000;
    this.ceilingY = 50; // 初始位置
  }

  void draw() {
    // 绘制固定的黑色边框
    fill(0);
    noStroke();
    rect(0, 0, 25, height);
    rect(width - 25, 0, 25, height);
    rect(0, 0, width, 50);
    stroke(NORMAL);

    // 持续绘制灰色天花板,用当前y坐标
    fill(125, 125, 125);
    noStroke();
    rect(0, ceilingY, width, 10); // 这里高度设为10,可根据需求调整
  }

  // 触发下降的方法,只更新状态
  void moveDown() {
    ceilingY += 100; // 每次下降100像素
  }
}

2. 修正主函数逻辑

去掉重复的状态变量和时间判断,触发间隔时仅更新Ceiling的状态,让类自身完成渲染:

import processing.sound.*;

SoundFile music;
Canon c1;
Ceiling t1;
float currentTime = 0;
float intervalo = 10000;

void setup() {
  size(550, 900); // Processing要求size放在background之前
  background(255);
  music = new SoundFile(this,"Musicadojogo.mp3");
  music.play();

  c1 = new Canon();
  t1 = new Ceiling(550, 900);
}

void draw() {
  background(255);
  t1.draw();
  c1.draw();

  // 10秒间隔触发天花板下降
  if (millis() - currentTime >= intervalo) {
    currentTime = millis();
    t1.moveDown(); // 仅更新状态,不直接绘制
    // c1.move_balls_down(100); // 如果需要同步移动泡泡,取消注释并传对应偏移量
  }

  println(mouseX,mouseY);
}

void keyPressed() {
  c1.keyPressed();
}

关键改动说明

  • 把灰色天花板的绘制逻辑移到Ceiling的draw方法中,每次draw都会执行,清屏后会重新渲染,不会消失。
  • 用ceilingY属性保存天花板的当前位置,触发间隔时仅更新这个值,状态持久化。
  • 移除重复的时间判断和amount变量,统一状态管理。
  • 调整setup中size和background的顺序,符合Processing语法要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:20:27