博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
009 牌视图实现
阅读量:6990 次
发布时间:2019-06-27

本文共 3176 字,大约阅读时间需要 10 分钟。

hot3.png

    今天一大早,心情不错,就打算将牌视图的实现简单说一下。

    首先,我们先看下素材是如何的,如下图所示:

094418_38fr_2011113.png

        素材一开始是本人经过ps设计出来,然后再切成一个个小件,通过一个叫做TexturePackerGUI的软件生成的一张整合图片,配带着一个说明各小图片位置大小的文本文件,文本文件内容格式如下:

                                                10_b.png:29:370:25:30

10_b.png为图片名称,29:370分别是为代表位置的x,y,25:30为图片宽高大小。

为此我写了一个解析这两个文件的工具类,代码如下:

/** * 

Title: AssetManager.java

 * 

Description: 素材管理,实现了单例

 * 

Copyright: Copyright (c) 2007

 * @author Tunie  * @date 2014年9月18日 * @version 1.0 */public class AssertManager { private List
 images; private Map
 asserts; private AssertManager() { images = new ArrayList
(); asserts = new HashMap
(); } /**  * 读取文件  * @param imagePath 图片文件路径  * @param imageDescPath 图片描述文件路径  */ public void readFile(String imagePath , String imageDescPath) { BufferedImage image = null; try { URL url = AssertManager.class.getClassLoader().getResource( imagePath); image = ImageIO.read(url); } catch (IOException e) { e.printStackTrace(); System.out.println("读取图片出错"); return; } images.add(image); try { String encoding = "GBK"; URL url = AssertManager.class.getClassLoader().getResource( imageDescPath); File file = new File(url.getPath()); Asset asset = null; if (file.isFile() && file.exists()) { // 判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file), encoding);// 考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) { System.out.println(lineTxt); asset = new Asset(lineTxt, image); asserts.put(asset.getName(), asset); } read.close(); } else { System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } } public void clear() { asserts.clear(); images.clear(); } public BufferedImage getImage(String name) { Asset asset = asserts.get(name); if (asset != null) return asset.getImage(); return null; } public static void loadFile(String imagePath , String imageDescPath) { getInstance().readFile(imagePath, imageDescPath); } public static BufferedImage getAssert(String name) { return getInstance().getImage(name); } private static AssertManager instance; public static synchronized AssertManager getInstance() { if (instance == null) instance = new AssertManager(); return instance; } /** * 

Title: Asset

Description:素材,主要为图片 

* @author Tunie * @date 2014年9月18日 */ private class Asset { private BufferedImage parentImage; private String name; private int x; private int y; private int width; private int height; public Asset(String descInfo , BufferedImage parentImage) { analyse(descInfo); this.parentImage = parentImage; } public BufferedImage getImage() { return parentImage.getSubimage(x, y, width, height); } private void analyse(String descInfo) { String[] descs = descInfo.split(":"); name = descs[0]; x = new Integer(descs[1]); y = new Integer(descs[2]); width = new Integer(descs[3]); height = new Integer(descs[4]); } public String getName() { return name; } }}

实现很简单,没什么值得说明的地方。

转载于:https://my.oschina.net/u/2011113/blog/317231

你可能感兴趣的文章
2010款MacBook Pro SSD、内存升级
查看>>
解密穿戴式设备中的计步算法
查看>>
QT4实现语法高亮发现其正则表达式不够完整
查看>>
体验JBOOT(四)-- jboot-admin 篇
查看>>
Spring 下基于自定义注解拦截方法调用
查看>>
Eclipse常用快捷键
查看>>
fastdfs + nginx 搭建分布式文件系统(单机模式)
查看>>
PDF文件格式转换器下载免费版
查看>>
详解如何使git将项目上传到github
查看>>
sql多表连接,分组例子
查看>>
Rainbond v5.1.2发布,微服务架构应用便捷管理和交付
查看>>
新浪博客地址
查看>>
JAVA折腾微信公众平台(Token验证)
查看>>
疯狂Spring Cloud连载(28)开发消息微服务
查看>>
提高HTML5 canvas性能的几种方法!
查看>>
golang教程
查看>>
Redis 存储字符串和对象
查看>>
android样式开发遇到的小坑
查看>>
感知器算法
查看>>
课堂笔记-linux服务器架设
查看>>