Java 生成新的游戏窗口
我曾经有过这段代码,但我很难知道问题出在哪里。我试图从一个Java 生成新的游戏窗口,java,Java,我曾经有过这段代码,但我很难知道问题出在哪里。我试图从一个joptionpane 然后gui单击下面创建的游戏。然后返回到joptionpane。然后是点击游戏,这就是它在娱乐上搞砸的地方。它出错或通过了点击游戏。检查粘贴箱 Game game = new Game(); game.setPreferredSize(new Dimension(WIDTH * SCALE, HEIGHT * SCALE)); game.setMaximumSize(new Dimension(WIDTH * S
joptionpane
然后gui单击下面创建的游戏。然后返回到joptionpane
。然后是点击游戏,这就是它在娱乐上搞砸的地方。它出错或通过了点击游戏。检查粘贴箱
Game game = new Game();
game.setPreferredSize(new Dimension(WIDTH * SCALE, HEIGHT *
SCALE));
game.setMaximumSize(new Dimension(WIDTH * SCALE, HEIGHT *
SCALE));
game.setMinimumSize(new Dimension(WIDTH * SCALE, HEIGHT *
SCALE));
JFrame frame = new JFrame(game.TITLE);
frame.add(game);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
game.start();
我已尝试将我的代码重置为默认值,尝试使用包含的joptionpane
再次创建我想要的游戏,但它不再工作。我的计算机似乎不想再玩它了?我做了一些改变,但我不知道是什么关闭了我的功能
@Override
public void run() {
init();
long lastTime = System.nanoTime();
final double amountOfTicks = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
int updates = 0;
int frames = 0;
long timer = System.currentTimeMillis();
while (running) {
// this would be the game loop
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
if (delta >= 1) {
tick();
final int i = updates++;
delta--;
}
render();
frames++;
if (System.currentTimeMillis() - timer > 1000) {
timer += 1000;
//System.out.println(updates + " Ticks, FPS " + frames);
updates = 0;
frames = 0;
}
}
stop();
}
private void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
createBufferStrategy(2000);
createBufferStrategy(2);
return;
}
线程“thread-6”java.lang.IllegalStateException中的异常:组件必须具有有效的对等方 位于java.awt.Component$FlipBufferStrategy.createBuffers(Component.java:4006) 位于java.awt.Component$FlipBufferStrategy(Component.java:3980) 位于java.awt.Component$FlipSubcionBufferStrategy(Component.java:4503) 位于java.awt.Component.createBufferStrategy(Component.java:3857) 位于java.awt.Canvas.createBufferStrategy(Canvas.java:194) 位于java.awt.Component.createBufferStrategy(Component.java:3781) 位于java.awt.Canvas.createBufferStrategy(Canvas.java:169) 在com.game.src.main.game.render(game.java:662)上——这是createbufferstrategy 在com.game.src.main.game.run(game.java:618)-这是render(); 在java.lang.Thread.run(Thread.java:748)中,这是createbufferstrategy 不知道我开始干什么。谢谢你的帮助
Game.State = STATE.MENU;
这是在创建游戏状态之前需要的。
这就是那里的东西
Game.State (STATE.MENU);
“它出错或通过了点击游戏。”似乎错误消息可能很重要。编辑您的问题并向我们显示这些错误消息。如果是堆栈跟踪,请确保包含整个堆栈跟踪,包括所有“原因:”部分。查看帖子底部,错误就在那里。
frame.setVisible(true)
不能保证JFrame立即可见。它可能会要求系统显示窗口,系统可能会在以后提供新状态。尝试EventQueue.invokeLater(()->game.start())代码>。您还可以在显示框架之前添加WindowListener,并从WindowOpen方法运行game.start()。请在问题中包含所有代码,而不是在您链接到的外部网站上。但在这样做之前,请将问题中的代码简化为一个简单的代码。通常,通过创建一个错误,您自己已经发现了错误。堆栈溢出的目的不是让我们调试您的代码,而是让您就调试自己时遇到的一般编码问题提出一个有意义且有用的(对未来的读者)问题。如果问题是针对您的应用程序的,那么它对其他人没有用处,需要重写或根本不发布。
Game.State (STATE.MENU);