gpt4 book ai didi

java游戏循环。对初学者有一点帮助

转载 作者:行者123 更新时间:2023-11-29 05:01:09 25 4
gpt4 key购买 nike

@Override
public void run() {
while (running) {
currentState.update();
prepareGameImage();
// next line draws image(frame) to the screen
currentState.render(gameImage.getGraphics());
repaint();
}

// End game immediately when running becomes false.
System.exit(0);
}


private void prepareGameImage() {
if (gameImage == null) {
gameImage = createImage(gameWidth, gameHeight);
}

Graphics g = gameImage.getGraphics();
g.clearRect(0, 0, gameWidth, gameHeight);
}

这是游戏循环的片段。书中关于它是如何工作的一些解释。在 prepareGameImage() 中,我们通过创建和初始化宽度为 gameWidth 和高度为 gameHeight 的 gameImage 变量来准备离屏图像。(我不明白这是如何工作的 --->) 接下来,在每一帧上,我们使用大小相等的矩形清除此图像,以清除在前一帧中已绘制到屏幕上的所有图像。这可确保前一帧的图像不会渗入当前帧。每一帧都重新开始。
我不明白的是代码段的最后两行。 gameImage.getGraphics(); 的值存储在 Graphics 变量 g 中.方法 g.clearRect(0, 0, gameWidth, gameHeight);应该只影响变量 g并且不应影响 gameImage.getGraphics(); 生成的值
你能解释一下最后两行代码是如何完成任务的吗——“前一帧的图像不会渗入当前帧”:( :(
谢谢

最佳答案

gameImage.getGraphics();

仅将引用(不复制)传递给 gameImage 的内部图形。

假设 gameImage 是某个类 A 的一个实例,它有一个 Graphics G 类型的私有(private)变量。并且有一个访问该变量的方法:

public Graphics getGraphics(){
return this.G;
}

您可以看到...通过调用 getGraphics,您只有一个图形的引用(指针)。

关于java游戏循环。对初学者有一点帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059431/

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