我在java的相當新的,但我懷疑我的問題是由同樣的原因造成的this post麻煩與createBufferStrategy在Java中
因爲這讓我覺得我試圖呈現在我的組件添加到容器,我只需要幫助搞清楚發生了什麼。我評論了拋出IllegalStateException的行。
public void run() {
init();
long lastTime = System.nanoTime();
final double amountOfTicks = 60D;
double ns = 1000000000/amountOfTicks;
double delta = 0;
long now = System.nanoTime();
while(running)
{
delta += (now - lastTime)/ns;
lastTime = now;
if(delta >= 1)
{
tick();
delta--;
}
render(); //ISSUE HERE AND
}
stop();
}
public void tick() {
player.tick();
}
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if(bs == null)
{
createBufferStrategy(3); //ISSUE HERE, TOO
return;
}
Graphics g = bs.getDrawGraphics();
//RENDER HERE
//g.fillRect(0, 0, 1200, 600);
player.render(g);
//END RENDER
g.dispose();
bs.show();
}
public static void main(String[] args)
{
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));
Gui go = new Gui();
game.start();
//Program seems to continue running after ESC
}
錯誤消息
Exception in thread "Thread-0" java.lang.IllegalStateException: Component must have a valid peer
at java.awt.Component$FlipBufferStrategy.createBuffers(Unknown Source)
at java.awt.Component$FlipBufferStrategy.<init>(Unknown Source)
at java.awt.Component$FlipSubRegionBufferStrategy.<init>(Unknown Source)
at java.awt.Component.createBufferStrategy(Unknown Source)
at java.awt.Canvas.createBufferStrategy(Unknown Source)
at java.awt.Component.createBufferStrategy(Unknown Source)
at java.awt.Canvas.createBufferStrategy(Unknown Source)
at msa.devillegame.main.Game.render(Game.java:81)
at msa.devillegame.main.Game.run(Game.java:68)
at java.lang.Thread.run(Unknown Source)
組件必須有一個有效的對彈出時你不顯示你的組件。這意味着:您的組件不會出現在前面!創建並顯示你的框架和組件FIRST和你的緩衝區/ bufferstragey SECOND - 然後渲染! – 2014-09-02 05:24:01
當我遵循它們發生的順序時,在main調用Gui()時,框架首先發生,但在此之後,我無法確定何時調用bufferStrategy。 – user3750325 2014-09-02 05:39:31
你不能通過簡單的說出來創建Bufferstrategy!你必須詢問系統是否支持緩衝策略......然後,創建一個支持的緩衝策略...... – 2014-09-02 06:07:50