gpt4 book ai didi

java - 如何从左向右移动背景图像?

转载 作者:行者123 更新时间:2023-12-01 10:14:48 26 4
gpt4 key购买 nike

我正在使用 Java 制作一个游戏,我希望背景图像从右向左移动。我想继续重复,这样看起来玩家就在移动。

我编写了下面的代码来执行此操作,但有一个问题。图像将从右向左移动两次,但第三张图像不会显示。有什么想法吗?

public void update() {
x -= dx;
}

public void draw(Graphics2D g) {

// 1st image
g.drawImage(image, (int) x, (int) y, GamePanel.WINDOW_WIDTH, GamePanel.WINDOW_HEIGHT, null);

// keep scrolling the image
// there will be two same bg image on screen
if (x < 0) {
g.drawImage(image, (int) x + GamePanel.WINDOW_WIDTH, (int) y, GamePanel.WINDOW_WIDTH, GamePanel.WINDOW_HEIGHT, null);
}
if (x > 0) {
g.drawImage(image, (int) x - GamePanel.WINDOW_WIDTH, (int) y, GamePanel.WINDOW_WIDTH, GamePanel.WINDOW_HEIGHT, null);
}
}// End of draw method

看起来 x 的值永远保持在 dec 上,所以我添加了这段代码,但仍然有 1 部分图像丢失:

if(x+GamePanel.WINDOW_WIDTH < 0){
x = GamePanel.WINDOW_WIDTH;
}

最佳答案

很简单。只需将两个图像并排放置,并且不要忘记在某个时刻重置 x。

由于每个图像都与窗口一样宽,因此首先您只会看到第一张图像。然后它向左滚动,另一个图像从右侧滑入。滚动到只有第二张图像可见后,您可以切换回开头。 (我假设它是一个简单的平台滚动条,并且两个图像是相同的。)

|11111|
|11112|
|11122|
|11222|
|12222|
|11111| as above

在代码中:

public void update() {
x -= dx;
if (x<-GamePanel.WINDOW_WIDTH) {
x+=GamePanel.WINDOW_WIDTH;
// or reset to zero
}
}

public void draw(Graphics2D g) {

// 1st image
g.drawImage(image, (int) x, (int) y, GamePanel.WINDOW_WIDTH, GamePanel.WINDOW_HEIGHT, null);

// 2nd image right to 1st image
g.drawImage(image, (int) x + GamePanel.WINDOW_WIDTH, (int) y, GamePanel.WINDOW_WIDTH, GamePanel.WINDOW_HEIGHT, null);

}// End of draw method

关于java - 如何从左向右移动背景图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35964239/

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