需购买观看

全屏

13.2.3 ImageIO实现图片加载技术(0.3版)


【专业IT培训机构,真正零首付入学www.bjsxt.com


      游戏开发中,图片加载是最常见的技术。我们在此处使用ImageIO类实现图片加载,并且为了代码的复用,将图片加载的方法封装到GameUtil工具类中,便于我们以后直接调用。

      我们要先将项目用到的图片拷贝到项目的src下面,我们可以建立新的文件夹images存放所有图片,本节课项目结构如下:

图13-7 MyGame0.3项目结构图.png

图13-7 MyGame0.3项目结构图

· GameUtil工具类

      我们可以将一些辅助性的工具方法通通放到GameUtil中,便于重复调用。

【示例13-4】GameUtil类:加载图片代码

package cn.sxt.game;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;

public class GameUtil {
	// 工具类最好将构造器私有化。
	private GameUtil() {
	
	} 

	public static Image getImage(String path) {
		BufferedImage bi = null;
		try {
			URL u = GameUtil.class.getClassLoader().getResource(path);
			bi = ImageIO.read(u);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return bi;
	}
}

注:

      1. GameUtil.class.getClassLoader().getResource(path);可以帮助我们获得程序运行类加载器,加载资源的根目录,从而获得相对资源位置。

      2. ImageIO.read()方法是核心方法,帮助我们读取图片信息,并返回Image对象。

· 加载游戏背景图片和飞机图片

      我们将实现准备好的图片放到src/images下面,然后,开始读取这些图片,并显示在窗口中。

【示例13-5】MyGameFrame类:加载图片并增加paint方法

//将背景图片与飞机图片定义为成员变量
    Image bgImg = GameUtil.getImage("images/bg.jpg");
	Image planeImg = GameUtil.getImage("images/plane.png");

	//paint方法作用是:画出整个窗口及内部内容。被系统自动调用。
	@Override
	public void paint(Graphics g) {  
		g.drawImage(bgImg, 0, 0, null);
		g.drawImage(planeImg, 200, 200, null);
	}

      运行MyGameFrame类,执行结果如图13-8所示:

图13-8 MyGameFrame类运行效果图.png

图13-8 MyGameFrame类运行效果图

分类导航
点击按住视频可拖动

缩小

关闭

  • 正在学习
  • 北京总部地址:北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
  • 咨询电话:400-009-1906 010-56233821
  • Copyright 2007-2015 北京尚学堂科技有限公司
  • 京ICP备13018289号-1 京公网安备11010802015183