gpt4 book ai didi

java - 双缓冲看起来不稳定

转载 作者:行者123 更新时间:2023-12-01 04:41:11 24 4
gpt4 key购买 nike

我正在尝试为游戏实现双缓冲,但我不确定我是否正确执行。

我在主游戏循环中调用 this.repaint(),然后应该执行以下操作:

@Override
public void paint(Graphics g){
// this.getWidth() / this.getHeight() is the window size
this.dbImage = createImage(this.getWidth(), this.getHeight());
this.dbg = dbImage.getGraphics();
this.paintComponent(dbg);
g.drawImage(this.dbImage, 0, 0, this);
}

@Override
public void paintComponent(Graphics g){
try{
g.drawImage(bg, 0, 0, this);
// gameObjects is an ArrayList with an object in it that represents
// an item on the screen, such as an enemy or a bullet
for(int i = 0; i < gameObjects.size(); i++){
GameObject go = gameObjects.get(i);
g.drawImage(go.getSprite(), go.getX(), go.getY(), this);
}
}catch(Exception e){
}
}

我基本上做了这个人在这里所做的事情:YouTube Video我遇到的问题是,它的运行情况似乎比我使用双缓冲之前更糟。有时,项目会卡住半秒,然后恢复正常,然后在几分钟(或更短的时间内)再次发生。

最佳答案

创建一个图像,为该图像创建一个缓冲区,然后在缓冲区上进行所有绘制,这样就不会在每次绘制操作时都将其绘制到屏幕上。当整个框架完成后,您现在就可以在屏幕上真正绘制该图像了。

在初始化中:

offscreen = createImage(dim.width,dim.height); 
bufferGraphics = offscreen.getGraphics();

在绘图部分(无论你想要在缓冲区上什么):

 bufferGraphics.fillRect(20, 20+m,0,20);

完成后在绘图屏幕中:

  g.drawImage(offscreen,0,0,this); 

如果这些不满足,还有三重缓冲。

关于java - 双缓冲看起来不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16502009/

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