You need to enable JavaScript to run this app. Processing序列动画单音轨仅Class Two响应、背景控制及时序问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Processing序列动画单音轨仅Class Two响应、背景控制及时序问题求助

修正后完整代码

import processing.sound.*;

// 全局音频资源,全程仅加载一次
SoundFile bgm;
Amplitude volAnalyzer;
color bg = #222222; // 自行替换为你需要的背景色
color progressColor = #FFFFFF; // 对应原代码未定义的d变量,这里定义为进度条颜色

One objectone;
Two objecttwo;
Three objectthree;

int animCounter = 0;
boolean openingAnimation = false;
boolean startAnimation = false;

void setup() {
  size(displayWidth, displayHeight);
  frameRate(50);
  // 全局加载音频,仅初始化一次
  bgm = new SoundFile(this, "music.mp3");
  bgm.loop();
  volAnalyzer = new Amplitude(this);
  volAnalyzer.input(bgm);
  
  objectone = new One();
  // 给Two类传入全局音频分析器
  objecttwo = new Two(volAnalyzer);
  objectthree = new Three();
}

void draw() {
  if (openingAnimation) {
    if (animCounter > 0 && animCounter < 750) {
      objectone.show1();
    }
    animCounter++;
  }
  
  if (startAnimation) {        
    if (animCounter > 0 && animCounter < 2500) {
      objecttwo.update2();
      objecttwo.show2();
    } else if (animCounter > 2500 && animCounter < 3000) {
      objectthree.update3();
      objectthree.show3();
    }
    
    // 全局进度条
    if (animCounter > 0 && animCounter < 9000) {
      fill(progressColor);
      noStroke();
      // 修正rect参数:x,y,宽度,高度
      rect(0, height-10, map(animCounter, 0, 9000, 0, width), 10);
    }
    animCounter++;
  }
}

void keyPressed() {
  if (key == ' ') {
    openingAnimation = true;
    animCounter = 0;
  }
}

void mousePressed() {
  startAnimation = true;
  openingAnimation = false;
  animCounter = 0;
}

class One {
  void show1() {
    background(bg);
    // 此处添加One类的绘制逻辑
  }
}

class Two {
  Amplitude vol;
  // 构造函数接收全局的振幅分析器
  Two(Amplitude volAnalyzer) {
    this.vol = volAnalyzer;
  }
  void update2() {
    // 此处添加Two类的状态更新逻辑
  } 
  void show2() {
    background(bg);
    // 仅当前类调用音频分析,实现仅该类响应音频
    float howLoud = vol.analyze();
    // 此处添加Two类的绘制逻辑,可使用howLoud变量做声音响应效果
  }
}

class Three {
  void update3() {
    // 此处添加Three类的状态更新逻辑
  }
  void show3() {
    background(0);
    // 此处添加Three类的绘制逻辑
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 05:06:08