gpt4 book ai didi

Java 游戏无法在第二台显示器上呈现

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

我正在使用 Graphics2D 和 Canvas 类在 java 中创建一个游戏。

当我运行该程序时,JFrame 出现在我的第一台显示器上,并且没有任何问题。但是,当我将 JFrame 拖到第二个显示器上时,它会变成灰色并停止渲染任何内容,然后当我将它拖回到第一个显示器上时,程序会继续渲染。

我的游戏循环调用扩展 CanvasScreen 类中的 draw() 方法,这就是绘制方法。

public void draw(){
BufferStrategy bs = getBufferStrategy();
if(bs == null){
createBufferStrategy(2);
bs = getBufferStrategy();
g = (Graphics2D) bs.getDrawGraphics();
}

g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());

g.setColor(Color.WHITE);
g.drawString("Hello, this works", 300, 300);

g.drawImage(ImageLoader.test[0][0], 100, 100, null);

bs.show();
}

最佳答案

不要在方法的范围之外保留对 Graphics(或 Graphics2D)对象的引用。

g = (Graphics2D) bs.getDrawGraphics(); 移至 if block 之外。每次绘制时都需要获取一个新的Graphic。

您还需要dispose完成绘图后立即查看图形。

使用 BufferStrategy 有点复杂。我建议您查看 BufferStrategy documentation 中的示例代码。特别是,您需要使用循环来包围渲染,以检查 BufferStrategy 的 contentsRestored()contentsLost() 方法返回的值。

关于Java 游戏无法在第二台显示器上呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36318608/

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