If statement 在满足一定条件后使图像归零机会

If statement 在满足一定条件后使图像归零机会,if-statement,while-loop,processing,tint,If Statement,While Loop,Processing,Tint,我在使用程序处理时遇到了一个困难。 当试图在一定时间后使图像着色以使其透明时,它不会这样做,到目前为止,我已经: import ddf.minim.*; Minim minim; AudioInput in; PImage img; int a = 125;//geluidswaarde int fade = 0;//beginfade grote fade is zwarter int stmin = 2; //fadestapje donkerder int stplus = 10; /

我在使用程序处理时遇到了一个困难。 当试图在一定时间后使图像着色以使其透明时,它不会这样做,到目前为止,我已经:

import ddf.minim.*;

Minim minim;
AudioInput in;

PImage img;
int a = 125;//geluidswaarde
int fade = 0;//beginfade grote fade is zwarter
int stmin = 2; //fadestapje donkerder
int stplus = 10; //fadestapje lichter
float gw = 0.04;//gevoeligheid kleiner = gevoeliger
int trmin = 10; // transparanter
int trplus = 20; // voller
int A = 0;

void setup() {
  img = loadImage("leegte.jpg");

  size(1000, 1000);
  frameRate(10); // Maximum 30 frames/beelden per seconde (speel hier gerust even mee)
  image(img, 0, 0);
  minim = new Minim(this); 
  // get a line in from Minim, default bit depth is 16
  in = minim.getLineIn(Minim.STEREO, 640);
}

void draw() {

  image(img, 0, 0);
  fill(255);
  rect(0, 0, 1000, 1000);

  if (abs(in.left.get(a))> (gw)) {
    fade = fade-stplus;
  }
  else {
    fade = fade+stmin;
  }
  fade = constrain(fade, 0, 300);
  fill(0, fade);
  rect(0, 0, 1000, 1000);

  while (fade>=300)
  {
    --A;
    tint(0, A);
  }
}





void stop()



{
  // always close Minim audio classes when you are done with them
  in.close();
  minim.stop();

  super.stop();
}
问题在于

while (fade>=300)
  {
    --A;
    tint(0, A);
  }

部分,在图像达到淡入淡出(0300)后,我希望它开始着色,使其从255 Opportacity变为0,但是,它只是坐在那里,之后什么也不做,任何帮助都将不胜感激。

看起来您可能会以无限循环结束。只要
fade
大于或等于
300
,就可以告诉它太多循环。但是,您没有在循环内修改淡入淡出,因此其值永远不会更改。这意味着它永远不会低于
300
,因此循环永远不会结束

也许你的意思是你的环体看起来像这样:

A = fade;
while (A >= 300)
{
    --A;
    tint(0, A);
}
还值得注意的是,只有在对
draw()
的任何给定调用完成后,显示才会更新。这意味着在这样的循环中重复调用
tint()
(或任何其他绘图函数)不会产生任何效果。最后一个调用是唯一具有可见效果的调用。相反,每次调用
draw()
时,都需要递减并应用
A

最后,我认为
tint()
只会影响后续图像;i、 它不会影响屏幕上已经显示的内容。也许您应该尝试在
draw()
的开头设置色调