gpt4 book ai didi

Java小程序双缓冲闪烁

转载 作者:行者123 更新时间:2023-12-01 04:47:17 25 4
gpt4 key购买 nike

我正在制作一款横向卷轴游戏。为了防止游戏中出现闪烁,我开始使用后缓冲区以获得更平滑的图形。它解决了大部分问题,但是,如果我移动角色足够长的时间,屏幕就会开始闪烁。 I read about the problem here,但它没有详细说明如何修复这个垂直消隐间隔。我明白,它实际上并不是“闪烁”,而是更多的“撕裂”,因为新的画在旧的上面。有什么办法可以避免这种“撕裂”吗?

谢谢!

最佳答案

我本来可以在评论中回答,但有太多细节。下面的代码几乎完全取自一个小程序,在该小程序中我必须像现在一样限制 FPS(除了它是在 mouseMove 上而不是 keyPressed 上)。

private long lastDrawTime = 0;

public void keyPressed(KeyEvent e) {
if (Calendar.getInstance().getTimeInMillis() - lastDrawTime < 20) return;
//do whatever needs to be done before redrawing
draw();
lastDrawTime = Calendar.getInstance().getTimeInMillis();
}

这里发生的事情是有一个实例变量lastDrawTime存储上次重绘发生的时间。在任何绘制发生之前,将此变量与触发 keyPressed 事件的当前时间进行比较。如果时间差小于允许的间隔(在本例中为 20 毫秒或每秒 50 帧),则该函数返回并且不进行任何绘制或更新。但是,如果经过了足够的时间,所有正常的事情都会完成,并且当前时间将存储在变量中。

关于Java小程序双缓冲闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617234/

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