2

我正在制作一款仿照旧西蒙游戏的安卓游戏。它的布局有点不同,因为它使用的是 3x3 的按钮布局。我试图让按钮在随机选择一个按钮的循环内一次点亮一个。我遇到的问题是所有按钮都同时亮起,只有最后一个(或第一个,不确定)变回原来的颜色。我已经非常彻底地尝试找到适合我情况的答案,但在这里或其他地方都没有运气。按钮 id(s) 在 butts[] 中。butts[0] 是按钮 1,butts[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);
  }
}
4

2 回答 2

0

您是否尝试过每次都使按钮无效?

  public Runna(int j2) 
  {
      butts[j2].setBackgroundColor(Color.parseColor("#540115"));
      butts[j2].invalidate();
  }
于 2012-10-01T01:45:13.230 回答
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);
   }

}

于 2012-10-01T02:54:41.613 回答