После того, как соблюдены определенные условия
Я использую программу обработки и наткнулся на трудности. При попытке сделать изображение тонированным, чтобы сделать его прозрачным через определенное время, оно не будет делать то, что я до сих пор:
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);
}
частично, после того, как изображение достигнет блеклости (0,300), я хочу, чтобы оно начало тонироваться, чтобы оно переместилось с 255 на 0, однако оно просто сидит и ничего не делает после этого, любая помощь будет принята с благодарностью.
1 ответ
Похоже, что вы, вероятно, в конечном итоге с бесконечным циклом. Вы говорите это слишком долго, пока fade
Больше или равно 300
, Тем не менее, вы не модифицируете fade
внутри цикла, поэтому его значение никогда не изменится. Это означает, что он никогда не опустится ниже 300
, так что цикл никогда не закончится.
Возможно, вы имели в виду, что ваше тело цикла выглядит так:
A = fade;
while (A >= 300)
{
--A;
tint(0, A);
}
Стоит также отметить, что дисплей обновляется только после любого draw()
полностью закончил. Это означает, что вы не увидите никакого эффекта от звонка tint()
(или любые другие функции рисования) неоднократно внутри цикла, подобного этому. Последний вызов - единственный, который будет иметь видимый эффект. Вместо этого вам нужно уменьшить и применить A
каждый раз draw()
называется.
Наконец, я думаю, tint()
влияет только на последующие изображения; то есть это не повлияет на то, что уже на экране. Возможно, вам следует попробовать установить оттенок в начале draw()
вместо.