2012-08-17 24 views
2

我有一個函數,打印有多少玩家猜測。
下面是代碼:Java重新繪製只有每隔一個猜測

public void drawString(Graphics g){ 
    g.setColor(Color.RED); 
    g.drawString("You have " + getN() + " guesses left", 400, 50); 
    if (lastN != getN()){ 
     repaint(); 
     lastN = getN(); 
    } 
} 

我的問題是,它重新繪製每個其他時間。我的意思是:

首先,它打印:你有10個猜測留下
然後它停留10時只有9猜測留下

然後打印:你有8個猜測留下
等。直到有0 ...

如何讓它每次都改變?

+1

你能提供一個[SSCCE(HTTP時間:// SSCCE。組織/)? – brimborium 2012-08-17 10:46:41

+1

在繪畫循環中永不增加變化組件狀態(當它被調用時它是不可控制的) – kleopatra 2012-08-17 11:46:42

回答

4

所以,你需要做的:

以外的 if
if (lastN != getN()){   
    lastN = getN(); 
} 
repaint(); 

repaint條件,在現在這種情況下,paint都會被調用

+0

它不斷地重新繪製自己,導致整個程序在這種情況下閃爍,在這種情況下,我需要它在如果條件 – Shepard 2012-08-17 10:54:47

+0

,那麼它只會'repaint',如果條件成立,你可以在上面例子 – 2012-08-17 10:56:09

+0

中'repaint'之後使用類似'Thread.sleep'的延遲提供更多代碼,那麼它會更清晰 – 2012-08-17 10:57:47