2015-01-11 32 views
1

我正在嘗試編寫簡單的代碼(使用Processing和Java的前幾個小時),它將顯示類似於Rubin的Vase的負面圖像。那裏有兩個臉或一個花瓶嗎?加載圖像鼠標點擊 - 處理/ Java

我有加載第一個圖像(黑色面孔/白色花瓶)的代碼。

PImage img; 
void setup() { 
    size (1000, 480); 
img = loadImage ("vaseedit.jpg"); 
} 

void draw() { 
    background(180,180,180); 
    image(img,0,0); 
} 

我怎樣才能獲得第二個圖像加載鼠標點擊?我試過了,但還沒有接近實現

a)單擊第二個圖像出現。一個地點擊它消失等

B)顯示第二圖像,而鼠標按鍵被按住

最近我有與切換圖像的代碼,但它不會運行,是

PImage img,imageinverse; 
void setup() { 
    size (1000, 480); 
img = loadImage ("vaseedit.jpg"); 
imageinverse = loadImage ("vaseeditinverse.jpg"); 

int value = 0; 
} 

void draw() { 
    background(0,0,0); 
    image(img,0,0); 

} 

void mousePressed() { 
    if(value == 0) { 
    image (imageinverse, 0,0); 

    } else { 

    image(img,0,0); 

    } 

} 
+0

不同於論壇的網站,我們不使用堆棧溢出「謝謝」,或者「任何幫助表示讚賞」,或簽名。見[「應該'嗨','謝謝''標語和祝福從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed - 從 - 個)。 –

回答

2

你快到了。爲了將來的參考,您應該始終包含您遇到的任何錯誤的確切文本,以及它們所在的行。

請注意,您在setup()函數內部聲明瞭值變量,因此只要setup函數退出,它就會從之外變爲。閱讀有關範圍here的教程。

您也永遠不會更改值變量。因此,即使您在草圖頂部聲明瞭值變量,因此您的mousePressed()函數仍然會在的範圍中,if語句將始終評估爲true。瞭解更多關於修改變量的更多信息here

即使您解決了這兩個問題,只要按下按鈕,鼠標點擊就會調用mousePressed()函數一次。所以當你按下鼠標時,你正在繪製圖像。但是,您也正在draw()函數中繪製圖像,該函數被稱爲每秒60次。這意味着當你按下鼠標的時候畫一個圖像,但是1/60秒後,你在上面畫一個不同的圖像。

相反,只需在mousePressed()函數中設置值變量,然後從draw()函數引用該變量來決定要繪製哪個圖像。

這裏有一個小例子,做那個決定繪製的顏色:

int value = 0; 

void draw(){ 
    if(value == 0){ 
    background(0, 0, 0); 
    } 
    else if(value == 1){ 
    background(255, 0, 0); 
    } 
    else if(value == 2){ 
    background(0, 255, 0); 
    } 
} 

void mousePressed(){ 

    //increment the value variable 
    value = value + 1; 

    //reset the value variable when it gets too big 
    if(value > 2){ 
    value = 0; 
    } 
}