Ich habe Probleme bei der Implementierung eines Handlers für eine Verzögerungsfunktion. Dies soll ein einfaches Würfelspiel sein.Android-Handler warten/Schlaf funktioniert nicht
Wenn der Computer an der Reihe ist, um die Würfel zu werfen, sollte zwischen jedem Wurf eine Pause sein, damit der Benutzer sehen kann, was der Computer gerollt hat. Wenn ich den Code ausführe, sollte er 2 Sekunden warten, bevor er erneut läuft. Das passiert nicht.
Dies ist meine erste Post auf Stackoverflow. Irgendwelche Vorschläge sind willkommen.
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();
}
Probieren Sie 'Thread.sleep (2000)' –
Innerhalb 'timerRunnable', entfernen Sie' timerHandler.postDelayed (this, 2000); // verzögerungslauf für 2 sekunden' und setze 'if (compTurnScore <20) // wenn cpu weniger als 20 würfelt rolle computerTurn();' Und rufe 'timerHandler.postDelayed (timerRunnable, 2000);' –