2017-11-11 142 views
1

Backstory:在Processing中製作一個重擊遊戲。當你點擊一個痣時,它會在頭頂上打印BOINK,痣消失。遇到第一次點擊時文本將不會打印的問題。我已經三次檢查了文本的位置和填充情況,但無濟於事。處理:文本不會僅在第一次激活mousePressed時打印()

讓我感到困惑的是,如果我在文本之前放置打印語句,打印將出現在控制檯中,但如果在文本之前放置任何形狀,它也將不會打印。

重申,此錯誤僅在第一次點擊時發生。

進一步的測試表明,同樣的問題發生在keyPressed中,所以這裏是一個很短的程序來演示錯誤。

void setup() { 
} 

void draw() { 
    background(0); 
} 

void keyPressed() { 
    textAlign(CENTER); 
    textSize(16); 
    fill(255, 255, 0); 
    println("test"); 
    text("Test", width/2, height/2); 
} 
+0

如果您發佈[mcve]而不是整個項目,你將會有更好的運氣。你需要[調試你的程序](http://happycoding.io/tutorials/processing/debugging)來隔離你的問題。哪一行代碼的行爲與您的預期不同? –

+0

我沒有發佈我的整個程序,但點了點;將其縮短爲具有相同問題的非特定示例。 – Tristan

回答

0

請記住,draw()函數被調用每秒60次,每幀你打電話的background()功能,清除屏幕,並繪製一個黑色的背景。

將其與keyPressed()函數進行比較,該函數僅在用戶按下某個鍵時調用。在那裏,你正在屏幕上繪製一些文字。

問題是,draw()函數將立即被調用,並將清除你剛畫的東西。

除了使用keyPressed()功能,你可能想使用keyPressed變量在draw()功能,像這樣:

void draw(){ 
    background(255, 0, 0); 

    if(keyPressed){ 
     background(0, 255, 0); 
    } 
} 

無恥的自我推銷:我在使用here加工寫上輸入一個教程。

+0

如果這個問題在每次按鍵上都是一致的,我會同意你這是一個背景()問題;然而,正如我所說的,它只發生在第一印刷機上,而不是其他印刷機上。 – Tristan

+0

@Tristan嘗試註釋掉對'background()'的調用,以便您可以真正看到正在屏幕上繪製的文本。如果我這樣做,我每次都會看到文本,包括第一次按下按鍵。 –