前言:创建一个包用来存放所有超级玛丽图片(本文命名为images)
创建一个class文件来创建常量类(本文命名为StaticValue)
目录
定义变量
单图片定义
//背景
public static BufferedImage bg = null;
public static BufferedImage bg2 = null;
//马里奥向左跳跃
public static BufferedImage jump_L = null;
//马里奥向右跳跃
public static BufferedImage jump_R = null;
//马里奥向左站立
public static BufferedImage stand_L = null;
//马里奥向右站立
public static BufferedImage stand_R = null;
//城堡
public static BufferedImage tower = null;
//旗杆
public static BufferedImage gan = null;
//障碍物
BufferedImage介绍:
BufferedImage是其Image抽象类的实现类,是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便地操作这个图片),提供获得绘图对象、图像缩放、选择图像平滑度等功能,通常用来做图片大小变换、图片变灰、设置透明不透明等。
多图片创建列表存放
//障碍物
public static List<BufferedImage> obstacle = new ArrayList<>();
//马里奥向左跑
public static List<BufferedImage> run_L = new ArrayList<>();
//马里奥向右跑
public static List<BufferedImage> run_R = new ArrayList<>();
//蘑菇敌人
public static List<BufferedImage> mogu = new ArrayList<>();
//食人花敌人
public static List<BufferedImage> flower = new ArrayList<>();
定义路径前缀
//路径的前缀,方便后续调用
public static String path = System.getProperty("user.dir") + "/src/images/";
user.dir 表示用户的当前工作目录
更多相关值参考博客bhttp://t.csdn.cn/voa3C
创建初始化方法
//初始化方法
public static void init() {
}
加载图片
单图片加载
try {
//加载背景图片
bg = ImageIO.read(new File(path + "bg.png"));
bg2 = ImageIO.read(new File(path + "bg2.png"));
//加载马里奥向左站立
stand_L = ImageIO.read(new File(path + "s_mario_stand_L.png"));
//加载马里奥向右站立
stand_R = ImageIO.read(new File(path + "s_mario_stand_R.png"));
//加载城堡
tower = ImageIO.read(new File(path + "tower.png"));
//加载旗杆
gan = ImageIO.read(new File(path + "gan.png"));
//加载马里奥向左跳跃
jump_L = ImageIO.read(new File(path + "s_mario_jump_L.png"));
//加载马里奥向右跳跃
jump_R = ImageIO.read(new File(path + "s_mario_jump_R.png"));
} catch (IOException e) {
e.printStackTrace();
}
(图片按照自己的命名添加)
try catch 错误处理;
执行规则:首先执行try中的代码 如果抛出异常会由catch去捕获并执行 如果没有发生异常 catch去捕获会被忽略掉 但是不管有没有异常最后都会执行。
更多try catch方法参考博客
ImageIO流
ImageIO可以从本地文件中读取图片和写入图片,也可以从网络上读取图片写入本地文件中
详细关于ImageIO流参考博客
多图片用for循环加载
//加载马里奥向左跑
for (int i = 1;i <= 2;i++) {
try {
run_L.add(ImageIO.read(new File(path + "s_mario_run"+ i +"_L.png")));
} catch (IOException e) {
e.printStackTrace();
}
}
//加载马里奥向右跑
for (int i = 1;i <= 2;i++) {
try {
run_R.add(ImageIO.read(new File(path + "s_mario_run"+ i +"_R.png")));
} catch (IOException e) {
e.printStackTrace();
}
}
try {
//加载障碍物
obstacle.add(ImageIO.read(new File(path + "brick.png")));
obstacle.add(ImageIO.read(new File(path + "soil_up.png")));
obstacle.add(ImageIO.read(new File(path + "soil_base.png")));
} catch (IOException e) {
e.printStackTrace();
}
//加载水管
for (int i = 1;i <= 4;i++) {
try {
obstacle.add(ImageIO.read(new File(path + "pipe"+ i +".png")));
} catch (IOException e) {
e.printStackTrace();
}
}
//加载不可破坏的砖块和旗子
try {
obstacle.add(ImageIO.read(new File(path + "brick2.png")));
obstacle.add(ImageIO.read(new File(path + "flag.png")));
} catch (IOException e) {
e.printStackTrace();
}
//加载蘑菇敌人
for (int i = 1;i <= 3;i++) {
try {
mogu.add(ImageIO.read(new File(path + "fungus"+i+".png")));
} catch (IOException e) {
e.printStackTrace();
}
}
//加载食人花敌人
for (int i = 1;i <= 2;i++) {
try {
flower.add(ImageIO.read(new File(path + "flower"+i+".png")));
} catch (IOException e) {
e.printStackTrace();
}
}
路径根据自己图片命名更改
初始化图片
//初始化图片
StaticValue.init();
在主函数的空参构造里初始化。
注:本文仅作为学习笔记,参考的视频链接02_超级玛丽--创建并完成常量类-1_尚学堂_哔哩哔哩_bilibili
03_超级玛丽--创建并完成常量类-2_尚学堂_哔哩哔哩_bilibili