新建class文件(本文命名为BackGround)
目录
创建背景类
定义变量
public class BackGround {
//当前场景要显示的图像
private BufferedImage bgImage = null;
//记录当前是第几个场景
private int sort;
//判断是否是最后一个场景
private boolean flag;
}
创建空参构造
public BackGround() {
}
为什么要有无参构造,无参构造的原理。参考博客http://t.csdn.cn/ugC6T
创建含有两个参数的构造函数
public BackGround(int sort,boolean flag) {
}
赋值
this.sort = sort;
this.flag = flag;
判断flag
if (flag) {
bgImage = StaticValue.bg2;
}else {
bgImage = StaticValue.bg;
}
生成变量的getter方法
public BufferedImage getBgImage() {
return bgImage;
}
public int getSort() {
return sort;
}
public boolean isFlag() {
return flag;
}
在Java中,getter和setter是两种常规方法,用于检索和更新变量的值。 通过使用getter和setter,可以控制如何以适当的方式访问和更新其重要变量。
快捷键生成getter和setter方法(仅适用Eclipse):
- 右键单击Java文件->选择source->生成Getter和Setter
详细步骤参考博客http://t.csdn.cn/Ddrha
绘制背景
储存所有背景
在myJframe类中定义列表
//用于存储所有的背景
private List<BackGround> allBg = new ArrayList<>();
储存当前场景
定义BackGround对象
//用于存储当前的背景
private BackGround nowBg = new BackGround();
创建全部场景
在空参构造中用for循环创建全部场景
for (int i = 1;i <= 3;i++) {
allBg.add(new BackGround(i,i == 3 ? true : false));
}
设置当前场景
nowBg = allBg.get(0);
0,1,2分别代表第一,二,三个场景
repaint方法绘制图像
repaint();
//绘制图像
repaint 重绘此组件。repaint()方法是一个具有刷新页面效果的方法,若不调用repaint方法图形发生变化后不会立刻显示
repaint调用update()清除当前显示并再调用paint()方法。
如果不调用repaint()就不能实现每一次的刷新显示,不能立刻显示就无法马上进行下一步的绘画。
定义变量用于双缓存
//用于双缓存
private Image offScreenImage = null;
重写repaint方法
判断offScreenImage是否为null
public void paint(Graphics g) {
if (offScreenImage == null) {
offScreenImage = createImage(800,600);
}
}
如果是null,则为其绘制图像。与窗口大小一致。
定义Graphics对象
Graphics graphics = offScreenImage.getGraphics();
调用Graphics.fillRect对图像进行填充
graphics.fillRect(0,0,800,600);
Graphics类:可以理解为画笔,为我们提供了各种绘制图形
画直线 | drawLine(int x1,int y1,int x2, int y2) |
画矩形边框 | drawRect(int x,int y,int width,int height) |
画椭圆边框 | drawOval(int x,int y,int width,int height) |
填充矩形 | fillRect(int x,int y,int width,int height) |
填充椭圆 | fillOval(int x,int y,int width,int height) |
画图片 | drawImage(Image img,int x,int y,……) |
画字符串 | drawString(String str,int x,int y) |
设置画笔的字体 | setFont(Font font) |
设置画笔的颜色 | setColor(Color c) |
在使用paint画图时应加上super.paint(g),表示在原来图像的基础上,再画图。如果不加super.paint(g),重绘时,会将原有的绘制清空,再根据paint(g)函数绘制。
绘制背景
graphics.drawImage(nowBg.getBgImage(),0,0,this);
将图像绘制到背景中
//将图像绘制到窗口中
g.drawImage(offScreenImage,0,0,this);
注:本文仅作为学习笔记,参考的视频链接