2

古いサイモンゲームをモデルにしたAndroidゲームを作っています。ボタンの3x3レイアウトを使用しているため、レイアウトが少し異なります。ボタンをランダムに選択するループ内で、ボタンを一度に1つずつ点灯させようとしています。私が抱えている問題は、すべてのボタンが一度に点灯し、最後の(または最初の、わからない)だけが元の色に戻ることです。私は自分の状況に対する適切な答えを見つけるために非常に徹底的に試みましたが、ここや他の場所では運がありませんでした。ボタンIDは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

スポットの価値と関係があると思います。これは関数に対してグローバルであり、毎回変更します。実行されますが、最終的には1つのスポットしかなく、実行可能なすべてのスポットが同じスポットを変更しようとしています。

おそらくあなたのランナブルにスポットを保存しますか?

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 に答える
0

毎回ボタンを無効にしようとしましたか?

  public Runna(int j2) 
  {
      butts[j2].setBackgroundColor(Color.parseColor("#540115"));
      butts[j2].invalidate();
  }
于 2012-10-01T01:45:13.230 に答える