Java实现一张背景图片的上下循环移动,并且随着关卡的改变(关卡为一个变量)可以自动变换相应的背景图片
时间: 2024-04-09 07:29:22 浏览: 79
你可以使用Java的Swing库来实现这个功能。以下是一个示例代码,可以实现背景图片的上下循环移动,并根据关卡变量自动更换背景图片:
```java
import javax.swing.*;
import java.awt.*;
public class BackgroundImageDemo extends JPanel {
private Image backgroundImage;
private int backgroundY = 0;
private int level = 1;
public BackgroundImageDemo() {
// 加载初始背景图片
backgroundImage = new ImageIcon("background_level1.png").getImage();
// 启动一个定时器,用于循环移动背景
Timer timer = new Timer(10, e -> {
backgroundY++;
if (backgroundY >= getHeight()) {
backgroundY = 0;
}
repaint();
});
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 绘制背景图片
g.drawImage(backgroundImage, 0, backgroundY, null);
g.drawImage(backgroundImage, 0, backgroundY - getHeight(), null);
}
public void setLevel(int level) {
this.level = level;
// 根据关卡变量更换背景图片
backgroundImage = new ImageIcon("background_level" + level + ".png").getImage();
repaint();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Background Image Demo");
BackgroundImageDemo panel = new BackgroundImageDemo();
frame.getContentPane().add(panel);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// 设置关卡为2,背景图片会自动更换为background_level2.png
panel.setLevel(2);
}
}
```
在这个示例代码中,首先在`BackgroundImageDemo`类的构造函数中加载初始背景图片,并启动一个定时器。定时器每10毫秒触发一次,并将背景图片的y坐标递增,实现背景图片的上下循环移动。
在`paintComponent`方法中,通过`drawImage`方法绘制背景图片。为了实现循环移动效果,我们绘制了两张背景图片,一张在当前y坐标,另一张在当前y坐标减去面板的高度。
通过`setLevel`方法可以根据关卡变量自动更换背景图片。在`main`方法中,我们创建了一个窗口并将`BackgroundImageDemo`面板添加到窗口中,并设置关卡为2,背景图片会自动更换为`background_level2.png`。
你可以根据自己的需求修改背景图片的文件名和路径,以及定时器的触发间隔。
阅读全文