我在執行延遲函數的處理程序時遇到問題。這應該是一個簡單的骰子游戲。安卓處理程序等待/睡眠不起作用
當輪到電腦轉動骰子時,應該在每個骰子之間停頓一下,這樣用戶就可以看到電腦滾動了。當我運行代碼時,它應該等待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(this,2000); //延遲運行2秒鐘'並且如果(compTurnScore <20)//如果cpu滾動小於20則繼續滾動 computerTurn();'並調用'timerHandler.postDelayed(timerRunnable,2000);' –