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()
的开头设置色调