3.2增加一点图片
上篇中,我们制作了围墙,但是围墙是用实心矩形绘制,那么,本节我们用图片替代图形,完成视觉上的一次突破。
3.2.1 绘制图片
网盘地址:「Swing版babaisyou」阿里云盘分享
首先,我们将资源放到我们的项目中,这里,我在ui包下新建了一个asset包,便于后续资源加载,将网盘中的素材放到项目中
修改GameClosure中的draw()方法:
-
获取图片地址
在GameClosure中测试,资源是否可以访问
public static void main(String[] args) {
URL resource = GameFrame.class.getResource("asset/icon/LAVA.gif");
System.out.println(resource);
}
运行后,控制台显示地址,即成功
-
将图片加载到内存中
URL resource = GameFrame.class.getResource("asset/icon/LAVA.gif");
Image image = new ImageIcon(resource).getImage();
-
绘制图片
修改GameClosure中draw()方法
/**
* 绘制墙体
* @param graphics
*/
public void draw(Graphics graphics) {
URL resource = GameFrame.class.getResource("asset/icon/LAVA.gif");
Image image = new ImageIcon(resource).getImage();
// graphics.setColor(Color.red);
for (int i = 0; i < closureList.size(); i++) {
Closure closure = closureList.get(i);
// graphics.fillRect(closure.getX(),closure.getY(),closure.getWidth(),closure.getWidth());
graphics.drawImage(image,closure.getX(),closure.getY(),null);
}
}
运行GameApp结果如下
3.2.2抽取图片加载方法
由于后期需要大量图片加载,因此我们在util包下建立GameUtil类,抽取如下方法
/**
* 游戏所需工具
*/
public class GameUtil {
public static Image loadBufferedImage(String url) {
URL resource = GameFrame.class.getResource(url);
Image image = new ImageIcon(resource).getImage();
return image;
}
}
3.2.3添加窗口图标
此时,我们可以给游戏窗口设置图标
// 设置窗口图标
this.setIconImage(GameUtil.loadBufferedImage("asset/logo/logo.png"));