java小游戏超级玛丽:03.创建背景类并绘制背景

发布于:2022-12-15 ⋅ 阅读:(527) ⋅ 点赞:(0)

新建class文件(本文命名为BackGround)

 

目录

 

创建背景类

定义变量

创建空参构造

创建含有两个参数的构造函数

生成变量的getter方法

绘制背景

储存所有背景

记录当前场景

创建全部场景

设置当前场景

repaint方法绘制图像

定义变量用于双缓存

重写repaint方法

绘制背景

将图像绘制到背景中


创建背景类

定义变量

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);

注:本文仅作为学习笔记,参考的视频链接

06_超级玛丽--创建背景类_尚学堂_哔哩哔哩_bilibili

07_超级玛丽--绘制背景_尚学堂_哔哩哔哩_bilibili


网站公告

今日签到

点亮在社区的每一天
去签到