gpt4 book ai didi

java - java中的BufferStrategy中的图像闪烁?

转载 作者:行者123 更新时间:2023-12-02 09:39:31 25 4
gpt4 key购买 nike

我正在用 java 制作游戏,需要在游戏板上绘制单元。我将所有单位放在一个列表中,并绘制该列表中的每个单位。绘制方法如下所示:

  public void paint(Graphics g) {
super.paint(g);

if (unitList != null) {
Collections.sort(unitList);
for (Unit unit : unitList) {
Image image = unit.getImage();
g.drawImage(
image,
(int) (playPosition.x + unit.getPosition().getX() - image
.getWidth(null) / 2), (int) (playPosition.y
+ unit.getPosition().getY() - image
.getHeight(null) / 2), null);
}
}
}

我试图制作一个 BufferStrategy 但这只会让问题变得更糟,我猜我做错了什么。

谢谢

最佳答案

也许您没有正确实现 BufferStrategy
通过在 Image 上进行离屏绘制来尝试手动双缓冲,然后在常规重写的 paint() 方法中绘制整个所述图像。

你会这样做:

// Double buffering objects.
Image doubleBufferImage;
Graphics doubleBufferGraphics;

/*
* Onscreen rendering.
*/
@Override
public void paint(Graphics g) {
doubleBufferImage = createImage(getWidth(), getHeight());
doubleBufferGraphics = doubleBufferImage.getGraphics();
paintStuff(doubleBufferGraphics);
g.drawImage(doubleBufferImage, 0, 0, this);
}

/*
* Offscreen rendering.
*/
public void paintStuff(Graphics g) {
if (unitList != null) {
Collections.sort(unitList);
for (Unit unit : unitList) {
Image image = unit.getImage();
g.drawImage(
image,
(int) (playPosition.x + unit.getPosition().getX() - image
.getWidth(null) / 2), (int) (playPosition.y
+ unit.getPosition().getY() - image
.getHeight(null) / 2), null);
}
}
}

关于java - java中的BufferStrategy中的图像闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858802/

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