2012-10-01 46 views
2

我正在製作一款仿舊舊西蒙遊戲後的Android遊戲。它在佈局上與使用3x3佈局的按鈕有點不同。我試圖讓按鈕在隨機選擇按鈕的循環內一次點亮一個按鈕。我遇到的麻煩是所有的按鈕一下子亮起來,只有最後一個(或第一個,不確定)變回原來的顏色。我已經非常徹底地嘗試爲我的情況找到合適的答案,但在這裏或其他地方沒有運氣。按鈕ID(s)位於尾巴[]中。按鈕[0]是按鈕1,按鈕[2] ...以下是我的嘗試。突出顯示按鈕一次一個

public void play() 
{ 
    for(int x = 0; x <= numButtons; ++x) 
    { 
     spot = randomGenerator.nextInt(9); 
     playMe[x] = spot; 
     //butts[spot].setBackgroundColor(Color.parseColor("#540115")); 
     handler.postDelayed(new Runna(spot), (x+1)*1000); 
    } 
} 
class Runna implements Runnable 
{ 
    public Runna(int j2) 
    { 
     butts[j2].setBackgroundColor(Color.parseColor("#540115")); 
    } 
    public void run() 
    { 
    butts[spot].setBackgroundColor(Color.LTGRAY); 
    } 
} 

回答

0

我認爲這與現貨的價值有關。這對功能來說是全球性的,你每次都要改變它。它運行,但最後仍然只有一個點,每個可運行的都試圖改變同一個點。

也許保存在可運行的位置?

class Runna implements Runnable 
{ 
    int s; 

    public Runna(int j2) 
    { 
     s = j2; 
     butts[s].setBackgroundColor(Color.parseColor("#540115")); 
    } 

    public void run() 
    { 
     butts[s].setBackgroundColor(Color.LTGRAY); 
    } 

}

+0

這樣做。謝謝!我設置了另一個Runnable來設置顏色,效果很好。 –

0

您是否曾嘗試每次都使按鈕無效?

public Runna(int j2) 
    { 
     butts[j2].setBackgroundColor(Color.parseColor("#540115")); 
     butts[j2].invalidate(); 
    } 
+0

是,它具有相同的結果。 –

+0

好吧,也許你可以重新安排你從runnable結束後發佈的代碼,告訴它下一個按鈕的改變。 –