在函数中间更改 btn 资源



我试图在玩家移动和计算机移动之间创建一个小停顿(当选择的情况是案例: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 所做的只是使视图无效,这将在循环器的下一个绘制命令中告诉我们它需要重新绘制自己。

另外,永远不要睡在主线程上。 由于上述原因,主线程上的睡眠会使应用无响应。

最新更新