-1

プログラム全体を一時停止せずにメソッドを一時停止する方法について、しばらく前に質問を投稿しました。コンテキストのリンクは次のとおりです-プログラム全体を一時停止せずにメソッドを一時停止するにはどうすればよいですか?。私が得た答えは、新しいスレッドを作成し、そこから一時停止することでした。新しいスレッドは機能しましたが、今は別の問題があります。フリップを同時に5〜6回実行しているため、すべて同じグラフィックを使用する3つのsetcolorメソッドが混同されています。スレッドによっては、色が緑、黒、白に設定されているためだと思います。その結果、アニメーション中に作品の色が急速に変化します。これを修正するにはどうすればよいですか?

  public void flip(int row, int col, Graphics window)
{
Color a;
    Color b = new Color(0, 100, 0);
if (pieces[row][col]==2)
    a = Color.black;
else
    a = Color.white;
for ( int size = 90; size>=0; size-=2)
{
    try { Thread.sleep(5,5555); } catch (InterruptedException exc){}
    window.setColor(b);
    window.fillRect(row*100+3, col*100+3, 94, 94);
    window.setColor(a);
    window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);

}
if (a==Color.black)
    a=Color.white;
else
    a=Color.black;
for ( int size = 0; size<=90; size+=2)
{
    try { Thread.sleep(5,5555); } catch (InterruptedException exc){}
    window.setColor(b);
    window.fillRect(row*100+3, col*100+3, 94, 94);
    window.setColor(a);
    window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);
}
}
4

1 に答える 1

0

現在、すべて同じ値を変更するスレッドを使用しているため、同期について学習する必要があります。

于 2013-01-16T22:32:53.877 に答える