gpt4 book ai didi

java - 在 Canvas 中 hibernate 线程

转载 作者:行者123 更新时间:2023-12-02 00:17:10 25 4
gpt4 key购买 nike

在我的游戏中,我想在输掉或赢得关卡后将屏幕绘制为黑色,然后在屏幕上绘制一条白色消息。延迟几秒钟后,我希望屏幕在触摸时消失。下面是我的draw()方法的一部分。问题是,即使 sleep 命令是在绘制文本和 Canvas 之后,在屏幕被绘制为黑色并绘制文本之前,屏幕会卡住(或线程 hibernate )。有什么想法为什么会发生这种情况吗?

if (state == WIN || state == LOSE){
canvas.drawColor(Color.BLACK);
message = "Touch Screen To Start";
canvas.drawText(message + "", mCanvasWidth / 2, mCanvasHeight / 2, white);
try {
GameThread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

最佳答案

我有一种感觉,canvas 函数在返回之前实际上不会显示任何内容。特别是如果您在具有硬件加速的 Android >3.0 上运行,或者任何具有双缓冲的配置,则在完成之前它实际上不会更新屏幕。

相反,当您绘制黑屏时,请存储当前时间。像这样的东西:

mStartTime = System.currentTimeMillis();

然后在监视按下的函数中,检查已经过去了多少秒并查看是否有足够的时间,例如:

if( (System.currentTimeMillis() - mStartTime)/1000 > 5){
//Put code here to run after 5 seconds
}

这应该绘制您的文本并避免阻塞 Ui 线程(在各个方面都是一个很大的禁忌)。

关于java - 在 Canvas 中 hibernate 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com