1

残りの推測数を書き込むメソッドがあり、文字や単語を逃すたびに再描画したいのですが、常に再描画し続け、プログラム全体が常にフラッシュします。

私の方法は次のようになります。

public void repaintWord(Graphics g){
    g.SetColor(Color.RED);
    g.drawString("You have " + getN() + " guesses left", 400, 50);
    repaint();
}

getN() が値を変更したときに一度だけ再描画する方法は?

4

2 に答える 2

5

getN()最後に出たときの値を保存し、入ったときrepaintWord()と比較しgetN()ます。

private int lastN = ??; /* Value for max guesses. */

public void repaintWord(Graphics g)
{
    if (lastN != getN())
    {
        lastN = getN();
        g.SetColor(Color.RED);
        g.drawString("You have " + lastN + " guesses left", 400, 50);
        repaint();
    }
}
于 2012-08-16T21:48:42.297 に答える
2

lastGuessCountメンバー変数として保存:

悪い推測で

lastGuessCount--;

次に使用します:

if (getN() != lastGuessCount) {
    repaintWord(g);
}
于 2012-08-16T21:49:29.750 に答える