遅延機能のハンドラーを実装する際に問題があります。これは簡単なダイスゲームであるはずです。アンドロイドハンドラーの待機/スリープが機能しない
コンピュータがサイコロを振っているとき、各ロールの間に休止があるので、ユーザーはコンピュータのロールを見ることができます。コードを実行すると、2秒間待ってから再度ローリングする必要があります。これは起こりません。
これは私の最初の投稿です。どんな提案も大歓迎です。
Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {
@Override
public void run() {
timerHandler.postDelayed(this, 2000); //delay run for 2 seconds
}
};
public void computerTurn() {
rollButton.setEnabled(false); //disable UI for cpu's turn
holdButton.setEnabled(false);
ImageView diceImg = (ImageView) findViewById(R.id.dicePic);
Random r = new Random();
diceRoll = r.nextInt(6) + 1;
switch (diceRoll) {
case 1:
compTurnScore = 0;
diceImg.setImageResource(R.drawable.dice1);
compTurnScoreTxt.setText("Computer Turn Total :" + compTurnScore);
break;
case 2: ...
case 3: ...
case 4: ...
case 5: ...
case 6:
compTurnScore += 6;
diceImg.setImageResource(R.drawable.dice6);
compTurnScoreTxt.setText("Computer Turn Total :" + compTurnScore);
break;
}
timerHandler.postDelayed(timerRunnable, 0); //run the timerhandler without any delay
if(compTurnScore < 20) //if cpu rolls less than 20 keep rolling
computerTurn();
}
'Thread.sleep(2000)' –
'timerRunnable'の中で、' timerHandler.postDelayed(this、2000);を削除してください。 // 2秒間実行を延期して、 'if(compTurnScore <20)// cpuが20未満のロールを残す場合// computerTurn();' timerHandler.postDelayed(timerRunnable、2000);を呼び出します。 –