我试图在玩家移动和计算机移动之间创建一个小停顿(当选择的情况是案例:1时,comp调用游戏(。问题是在我的调试中,我看到我的按钮资源一起变化,并且仅在游戏功能结束时,在播放器和计算机播放之后。我预计在"drawTheMove"之后,btn 会发生变化。
public void game(Point p, Button btn) {
switch (turn % numOfplayers) {
case 0: {
if (!checkIfGotWinner()) {
if (isValid(p)) {
addChoice(p);
drawTheMove(btn);
turn++;
if(!isHuman2) {
getUserClicks = false;
comp.playYourGameBitch(this);
}
}
}
break;
}
case 1: {
if (!checkIfGotWinner() && isValid(p)) {
try {
Thread.sleep(400);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
addChoice(p);
drawTheMove(btn);
getUserClicks = true;
turn++;
}
checkIfGotWinner();
break;
}
}
}
画移动:
public void drawTheMove(Button btn) {
btn.setText(Integer.toString(getNumOfClick()));
Player player = getLastPlayerPlay();
btn.setBackgroundResource(player.getImageId());
}
谢谢!
在主线程中的 Looper 将控制权返回之前,Android 中的绘制不会发生。 它们不会立即发生。 setText 所做的只是使视图无效,这将在循环器的下一个绘制命令中告诉我们它需要重新绘制自己。
另外,永远不要睡在主线程上。 由于上述原因,主线程上的睡眠会使应用无响应。