У меня возникли проблемы с внедрением обработчика функции задержки. Предполагается, что это простая игра в кости.android handler wait/sleep не работает
Когда очередь компьютера поворачивает кубик, предполагается, что между каждым рулоном будет пауза, чтобы пользователь мог видеть, что компьютер скатился. Когда я запускаю код, он должен дождаться 2 секунд перед повторным запуском. Этого не происходит.
Это мое первое сообщение о stackoverflow. Любые предложения приветствуются.
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 (это, 2000); // задержка запуска в течение 2 секунд' и put 'if (compTurnScore <20) // если cpu rolls меньше 20, продолжайте катить computerTurn();' И вызовите 'timerHandler.postDelayed (timerRunnable, 2000);' –