2014-01-29 59 views
0

我正在使用程序處理,並且遇到了困難。 當試圖使圖像的色彩,使之透明一定的時間後,也不會做到這一點,我有什麼至今:使圖像在滿足特定條件後變爲零oppacity

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 oppacity到0,但是,它只是坐在那裏,事後沒有做任何幫助,將不勝感激。

回答

1

看起來你可能會以無限循環結束。只要fade大於或等於300,您也可以告訴它。但是,您不在循環內修改fade,因此其值永遠不會改變。這意味着它永遠不會低於300,所以循環永遠不會結束。

也許你的意思是你的循環體,看起來像這樣:

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

另外值得一提的是,到draw()任何給定的呼叫已經完全結束後顯示纔會更新。這意味着在類似的循環內不會看到任何影響tint()(或任何其他繪圖函數)的效果。最後一個電話是唯一一個可見的效果。相反,每次調用draw()時,都需要遞減並應用A

最後,我認爲tint()隻影響後續的圖像;即它不會影響屏幕上已有的內容。也許你應該嘗試在draw()的開頭設置色調。