2013-01-16 33 views
-1

好吧,我回顧了一段時間後關於如何讓方法暫停而不暫停整個程序。以下是上下文鏈接 - How do I make method pause without pausing the whole program?。我得到的答案是創建一個新的線程,並從那裏暫停。 新的線程工作,但現在我有一個不同的問題。由於我同時運行翻轉5-6次,所有使用相同圖形的三種setcolor方法正在混淆。我認爲這是因爲一些線程將顏色設置爲綠色,一些變爲黑色,一些變爲白色。結果是這些作品在動畫中快速變色。我該如何解決?我的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); 
} 
} 
+2

代碼? ('catch(CommentTooShortException e){}') – Doorknob

+0

對不起,忘了。 – user1984974

回答

0

由於您現在使用的線程都改變了相同的值,您需要了解同步。