gpt4 book ai didi

java - BufferStrategy 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 15:19:34 30 4
gpt4 key购买 nike

我正在尝试使用 JFrame 和 canvas 为游戏构建简单的 gui。 Window 是一个扩展 JFrame 类的类,我使用 fillRect 方法来填充黑色矩形。每次我运行程序时,框架窗口都不是黑色的,而是默认颜色。我不知道我的代码有什么问题。

package test1;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;

/**
*
* @author sabertooth
*/
public class Test1 extends Canvas implements Runnable{

/**
* @param args the command line arguments
*/
private final static int width=600;
private final static int height=500;

private Window gui;
private Thread t;
private boolean status=false;

public boolean isStatus() {
return status;
}

public void setStatus(boolean status) {
this.status = status;
}


public int getWidth() {
return width;
}

public int getHeight() {
return height;
}


public static void main(String[] args) {
// TODO code application logic here
Dimension d=new Dimension(width,height);
Test1 mc=new Test1();
mc.gui=new Window();
mc.setPreferredSize(d);
mc.gui.setTitle("Welcome to my game");
mc.gui.add(mc);
mc.gui.setLocationRelativeTo(null);
mc.gui.setVisible(true);
Test1 t1=new Test1();
t1.start();

}

@Override
public void run() {
while(status)
{
update();
render();
}
}

public void render(){

}

public void update(){
BufferStrategy bs=getBufferStrategy();
if(bs==null)
{
createBufferStrategy(3);
return;
}
Graphics g=bs.getDrawGraphics();
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.dispose();
bs.show();
}


public synchronized void start(){

setStatus(true);
t=new Thread(this, "Game Thread");
t.start();
}
}

最佳答案

您的问题在这里:

Test1 t1=new Test1();
t1.start();

您已经设置了一个名为 mc 的 Test1 并将其添加到您的窗口中。然后,您创建一个新的 Test1 并告诉新的 Test1 开始更新,即使它没有添加到任何内容中。

启动 mc...

mc.start();

您还可以在此处添加此行以使窗口在启动时自行展开:

mc.gui.pack();
mc.gui.setVisible(true);//Set it above this line in main()

当我执行上述操作并使用 JFrame 而不是使用 Window 时,代码可以正常工作。

关于java - BufferStrategy 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20547542/

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