2012-10-01 183 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结束后发布的代码,告诉它下一个按钮的改变。 –