ImageLoader.java
上传用户:jennyfly
上传日期:2021-08-10
资源大小:735k
文件大小:4k
源码类别:

游戏

开发平台:

Java

  1. package view;
  2. import java.awt.image.BufferedImage;
  3. import java.io.IOException;
  4. import java.net.URL;
  5. import java.net.URLClassLoader;
  6. import javax.imageio.ImageIO;
  7. import model.Model;
  8. /**
  9.  * 本类负责图片资源的获取,一部分的图片的获取还采用了单一模式,防止程序遭到 外部修改
  10.  * 
  11.  * @author 何晓飞
  12.  * @version 2.0
  13.  */
  14. public class ImageLoader {
  15. /* 存放图片的根目录 */
  16. private static final String root = "images/";
  17. /* 存放图标的根目录 */
  18. private static final String iconRoot = "images/icons/";
  19. /* 用于存储小图片的二维数组 */
  20. private static  BufferedImage[][] images = new BufferedImage[Model.PIC_SUITS][Model.CARD_PAIRS];
  21. /* 鼠标图片 */
  22. private static BufferedImage cursorImage;
  23. /* 游戏面板中的小图片 */
  24. private static BufferedImage icon;
  25. /* 背景图片 */
  26. private static BufferedImage back;
  27. /* 背景图片 */
  28. private static BufferedImage initBackground;
  29. /* 暂停时显示的图片 */
  30. private static BufferedImage cover;
  31. /**
  32.  * 获取暂停时显示的图片
  33.  * 
  34.  * @return 暂停时显示的图片
  35.  */
  36. public static BufferedImage getCover() {
  37. if (cover == null)
  38. try {
  39. URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
  40. .getClassLoader();
  41. URL url = urlLoader.findResource(root + "cover.jpg");
  42. cover = ImageIO.read(url);
  43. } catch (Exception e) {
  44. e.printStackTrace();
  45. }
  46. return cover;
  47. }
  48. /**
  49.  * 获取鼠标Icon
  50.  * 
  51.  * @return cursorImage 返回一个读入鼠标图片的输入流
  52.  */
  53. public static BufferedImage getCursorImage() {
  54. if (cursorImage == null)
  55. try {
  56. URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
  57. .getClassLoader();
  58. URL url = urlLoader.findResource(iconRoot + "cursor.gif");// 定位鼠标图片文件的位置
  59. cursorImage = ImageIO.read(url);
  60. } catch (Exception e) {
  61. e.printStackTrace();
  62. }
  63. return cursorImage;
  64. }
  65. /**
  66.  * 获取指定图标
  67.  * 
  68.  * @param str
  69.  *            图标的名称
  70.  * @return 名字对应的图标
  71.  */
  72. public static BufferedImage getImage(String str) {
  73. icon = null;
  74. try {
  75. URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
  76. .getClassLoader();
  77. URL url = urlLoader.findResource(iconRoot + str);// 定位游戏面版中关于小组信息图片文件的位置
  78. icon = ImageIO.read(url);
  79. } catch (Exception e) {
  80. e.printStackTrace();
  81. }
  82. return icon;
  83. }
  84. /**
  85.  * 从图片文件中读入游戏中小图片
  86.  * 
  87.  * @param index
  88.  *            指定读入图片文件中的第几个图片
  89.  * @param fileName
  90.  *            图片文件名
  91.  * 
  92.  * @return images[index] 返回一个读入游戏中小图片的输入流
  93.  */
  94. public static BufferedImage getImageOf(int index, String fileName) {
  95. //如果图片对应关系变了或者数组对应元素还未初始化那么寻找资源图片
  96.     int type=0;
  97. if(fileName.equals("fruit")){
  98. type=0;
  99. }
  100. else if(fileName.equals("flag")){
  101. type=1;
  102. }
  103. if(images[type][index]==null)
  104. try {
  105. URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
  106. .getClassLoader();
  107. URL url = urlLoader.findResource(root + fileName + "/" + index
  108. + ".bmp");// 定位游戏中小图片文件的位置
  109. images[type][index] = ImageIO.read(url);
  110. } catch (IOException e) {
  111. e.printStackTrace();
  112. }
  113. return images[type][index];
  114. }
  115. /**
  116.  * 获取消息板的背景图片
  117.  * 
  118.  * @return 消息板的背景图片
  119.  */
  120. public static BufferedImage getInfoBack() {
  121. if (back == null)
  122. try {
  123. URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
  124. .getClassLoader();
  125. URL url = urlLoader.findResource(root + "back.jpg");
  126. back = ImageIO.read(url);
  127. } catch (Exception e) {
  128. e.printStackTrace();
  129. }
  130. return back;
  131. }
  132. /**
  133.  * 
  134.  * @return 登录界面的背景图片
  135.  */
  136. public static BufferedImage getInitBackground() {
  137. if (initBackground == null)
  138. try {
  139. URLClassLoader urlLoader = (URLClassLoader) ImageLoader.class
  140. .getClassLoader();
  141. URL url = urlLoader.findResource(root + "init.jpg");
  142. initBackground = ImageIO.read(url);
  143. } catch (Exception e) {
  144. e.printStackTrace();
  145. }
  146. return initBackground;
  147. }
  148. }