- package view;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- import java.net.URL;
- import java.net.URLClassLoader;
- import javax.imageio.ImageIO;
- import model.Model;
- /**
- * 本类负责图片资源的获取,一部分的图片的获取还采用了单一模式,防止程序遭到 外部修改
- *
- * @author 何晓飞
- * @version 2.0
- */
- public class ImageLoader {
- /* 存放图片的根目录 */
- private static final String root = "images/";
- /* 存放图标的根目录 */
- private static final String iconRoot = "images/icons/";
- /* 用于存储小图片的二维数组 */
- private static BufferedImage[][] images = new BufferedImage[Model.PIC_SUITS][Model.CARD_PAIRS];
- /* 鼠标图片 */
- private static BufferedImage cursorImage;
- /* 游戏面板中的小图片 */
- private static BufferedImage icon;
- /* 背景图片 */
- private static BufferedImage back;
- /* 背景图片 */
- private static BufferedImage initBackground;
- /* 暂停时显示的图片 */
- private static BufferedImage cover;
- /**
- * 获取暂停时显示的图片
- *
- * @return 暂停时显示的图片
- */
- public static BufferedImage getCover() {
- if (cover == null)
- try {
- URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
- .getClassLoader();
- URL url = urlLoader.findResource(root + "cover.jpg");
- cover = ImageIO.read(url);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return cover;
- }
- /**
- * 获取鼠标Icon
- *
- * @return cursorImage 返回一个读入鼠标图片的输入流
- */
- public static BufferedImage getCursorImage() {
- if (cursorImage == null)
- try {
- URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
- .getClassLoader();
- URL url = urlLoader.findResource(iconRoot + "cursor.gif");// 定位鼠标图片文件的位置
- cursorImage = ImageIO.read(url);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return cursorImage;
- }
- /**
- * 获取指定图标
- *
- * @param str
- * 图标的名称
- * @return 名字对应的图标
- */
- public static BufferedImage getImage(String str) {
- icon = null;
- try {
- URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
- .getClassLoader();
- URL url = urlLoader.findResource(iconRoot + str);// 定位游戏面版中关于小组信息图片文件的位置
- icon = ImageIO.read(url);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return icon;
- }
- /**
- * 从图片文件中读入游戏中小图片
- *
- * @param index
- * 指定读入图片文件中的第几个图片
- * @param fileName
- * 图片文件名
- *
- * @return images[index] 返回一个读入游戏中小图片的输入流
- */
- public static BufferedImage getImageOf(int index, String fileName) {
- //如果图片对应关系变了或者数组对应元素还未初始化那么寻找资源图片
- int type=0;
- if(fileName.equals("fruit")){
- type=0;
- }
- else if(fileName.equals("flag")){
- type=1;
- }
- if(images[type][index]==null)
- try {
- URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
- .getClassLoader();
- URL url = urlLoader.findResource(root + fileName + "/" + index
- + ".bmp");// 定位游戏中小图片文件的位置
- images[type][index] = ImageIO.read(url);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return images[type][index];
- }
- /**
- * 获取消息板的背景图片
- *
- * @return 消息板的背景图片
- */
- public static BufferedImage getInfoBack() {
- if (back == null)
- try {
- URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
- .getClassLoader();
- URL url = urlLoader.findResource(root + "back.jpg");
- back = ImageIO.read(url);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return back;
- }
- /**
- *
- * @return 登录界面的背景图片
- */
- public static BufferedImage getInitBackground() {
- if (initBackground == null)
- try {
- URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
- .getClassLoader();
- URL url = urlLoader.findResource(root + "init.jpg");
- initBackground = ImageIO.read(url);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return initBackground;
- }
- }