我正在使用俄罗斯方块应用程序,我有一个Thread.sleep
命令来动画tetriminos的下降。但这会造成与UI的冲突。所以我尝试了像这样的runOnUiThread():
while (gameover == false) {
tetriminoSettled = false;
try {
Thread.sleep(1000 - (counter * 3));
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
Random ran = new Random();
int x = ran.nextInt(7) + 1;
addTetrimino(createTetrimino(x)); //the UI operation
gridView.invalidate();
}
});
但是UI只会在游戏结束后更新。 你认为AsyncTask是一个好方法吗? 请尽量记住,我后来需要额外的UI-Threads来左右移动tetriminos等等。 谢谢!
答案 0 :(得分:1)
根据您发布的代码判断,您似乎正在使用gridview进行游戏。这是可能的,但不值得努力。只需使用SurfaceView,如此简短tutorial所示。您将有一个onDraw回调,您可以在其中更新每个绘图周期的任何内容。玩得开心,编码游戏真的很难:)。
答案 1 :(得分:0)
尝试gridView.postInvalidate();