【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用
在上一篇文章中,我们提到了图片必须是2的n次方的问题。但是随着Libgdx的不断完善和发展,使用一些工具就
可以很好的解决了这样一个问题,但是它的功能又不仅仅只限于此,那么下面就来让我们看看TexturePacker-Gui工
具的使用,我们又称之它为图片整合工具。
一、TexturePacker-Gui简介
TexturePacker-Gui是一个可视化版本的图片整合工具。这个工具的用途很简单,就是一个将小图片整合成一张
大图片,在把大图片打包成可查找的图片。而且通过TexturePacker-Gui工具的使用我们可以彻底解决使用不是2的N
次方的图片。
大家最好下载TexturePacker-Gui 3.1.0版,这个版本是个稳定版,如下图所示:
二、TexturePacker-Gui使用
1、下载完之后,将其解压。解压后你会发现里面有一个名为“test me!”的文件夹,点击打开里面有一个input 和
output 文件夹,这两个文件夹就是负责处理图片的。在 input 文件夹中,放入你要打包的图片,在output中得到输出
的图片和pack文件。如图所示:
2、界面的介绍如下图,这里特别注意,尽量将文件放在提供的“test me!”文件夹下的input和output文件夹下面,这
样可以减少不必要的麻烦。
按照上图中的顺序来讲解,也是我们操作的步骤:
① 新建一个pack文件,我这里命名为“test”;
② 输入文件目录,建议选择“test me!”文件夹下的input文件夹;
③ 输出文件目录,建议选择“test me!”文件夹下的output文件夹;
④这块区域是用来配置文件属性的,一般选择默认的就可以了,可以跳过此步骤;
⑤基本配置完成之后,点击“打包按钮”启动打包;
⑥打包成功之后,会在图片的预览区域预览打包后的图片。
3、打包好的文件会在output文件夹中生成,其中包含一个pack的配置文件,这个文件是必须要用到的。
如下图所示:
4、注意:这里的pack文件只是一个配置文件,可以手动修改,也就是说我们可以讲自己所要使用的图片,根据所给
的pack的固定格式,可以编辑成我们需要的配置文件,在后面的实例演示中我会详解如何手动配置文件。
三、TextureAtlas类
1、TextureAtlas介绍
该类存放在com.badlogic.gdx.graphics.g2d包下,该类继承自Object,实现了Disposable接口。
2、TextureAtlas用途
专属于TexturePacker封装的一个类,用于加载TexturePacker打包的图片。
四、实例演示
1、我们使用前面已经打包好的图片,将input1.png和test.pack一起放入assert文件夹下
2、test.pack文件可以通过文本编辑器打开,也可以再放入assert文件夹后在Eclipse中打开,打开之后可以通过手动编辑,如下图所示:
五、实现效果图
六、项目结构图
七、代码编写
MyGame.java:
package com.example.mylibgdx05; import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas; public class MyGame implements ApplicationListener {
//声明变量
private SpriteBatch batch; private TextureAtlas atlas; private Sprite region1, region2, region3; @Override
public void create() {
batch = new SpriteBatch(); //加载test.pack包
atlas = new TextureAtlas(Gdx.files.internal("test.pack")); //创建Sprite,同时设置我们需要的大小和绘制的起点位置
region1 = atlas.createSprite("test01");
region2 = atlas.createSprite("test02 (non POT)");
region3 = atlas.createSprite("test03 (multi shapes)"); region1.setPosition(0, 0);
region2.setPosition(0, 350);
region3.setPosition(200, 200);
} @Override
public void dispose() {
batch.dispose();
atlas.dispose();
} @Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); batch.begin(); //绘制图片
region1.draw(batch);
region2.draw(batch);
region3.draw(batch); batch.end();
} @Override
public void resize(int width, int height) {
} @Override
public void pause() {
} @Override
public void resume() {
}
}
介绍一下TextureAtlas类中的createSprite()方法:
| 方法 | 描述 |
|---|---|
createSprite( |
这个方法是返回一个Sprite类型的方法,而且他默认返回的是pack文件中打包的第一个 Region ,括号内部传入的是一个图片的名字。 |
createSprite(java.lang.String name, int index) |
这个方法是返回一个Sprite类型的方法,而且他默认返回的是pack文件中编号为“index ”的region,这里的index = 是一个数值,如:index = 1、index = 2、index = 3、index = 4 ,括号内部第一个传入的是一个图片的名字,也就是同样名字的图片,但是编号不同,这个可以用来做动画。 |
createSprites(java.lang.String name) |
这个方法是返回一个 Array <Sprite> 类型的方法,而且他默认返回的是pack文件中打包的Sprites,如果名字相同的话,也是从编号小的到编号大的开始选择,即: 例如 index = 1 - 5. |
好的,这一期的内容到这里就结束了,下一期会讲解文字的绘制。
写在最后:
近期有部分网友反应下载的个别资源运行会报错,博主心里有点纳闷,因为在调式运行都确保没有问题的情况下
才把资源上传上去供大家下载的。结果博主就试了一下,下载了一个之前上传过的源码,运行的时候确实是报错了,
提示的错误是找不到主程序的入口类,这让博主更郁闷了,不清楚是怎么发生的。有遇到过此问题的朋友还请留言告
之,博主一定感激不尽!
【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用的更多相关文章
- 【Android LibGDX游戏引擎开发教程】第08期:中文字体的显示和绘制(下)
在上一篇的文章中,我们介绍了Hiero这个非常好用工具的使用,但是LIbgdx的BitmapFont不支持多图,常用汉字 3500个,你总不能用hiero自己做吧,那怎么办呢?这其实微软早就解决这个问 ...
- 【Android LibGDX游戏引擎开发教程】第07期:中文字体的显示和绘制(上)
在字体的显示和绘制中,Libgdx的作者(Mario Zechner,美国人)给我们提供了一个非常好用的工具 ——Hiero,那么下面就来看看它具体的使用方法. 一.Hiero工具的使用 1.Hier ...
- 基于libgdx游戏引擎开发的飞天猫
闲来没事学学游戏,这是鄙人第一个小游戏——飞天猫 1,基于Android开发的小游戏,至少Android2.2以上的系统. 2,界面简洁,美观,游戏易操作,上手快. 3,可以左右摇摆手机来改变飞天猫的 ...
- libgdx游戏引擎教程
第一讲:libgdx游戏引擎教程(一)性能优良的游戏引擎—libgdx http://www.apkbus.com/android-57355-1-1.html 第二讲: libgdx游戏引擎教程(二 ...
- 或许您还不知道的八款Android开源游戏引擎
很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于iPhone下有诸如Cocos2d-iphone之类的免费游戏 ...
- [转载]或许您还不知道的八款Android开源游戏引擎
或许您还不知道的八款Android开源游戏引擎 分类: 技术文章 2010-08-04 20:27 17430人阅读 ...
- Android 2D游戏引擎AndEngine配置环境
Android 2D游戏引擎AndEngine配置环境 1.2 配置环境 在任何编程中,都需要一些软件或者硬件的支持.否则,没有硬件软件是不可能存在的,而想要编写对应语言的的程序,这需要对应语言库和 ...
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/9128819 XML是一种非常重要的文件格式,由于C++对XML的支持非常完善 ...
- 推荐一些好用的 HTML5 & JavaScript 游戏引擎开发库
推荐一些好用的 HTML5 & JavaScript 游戏引擎开发库 0. 引言 如果你是一个游戏开发者,并且正在寻找一个可以与 JavaScript 和 HTML5 无缝工作的游戏引擎.那么 ...
随机推荐
- C++ 100款开源界面库 (10)
(声明:Alberl以后说到开源库,一般都是指著名的.或者不著名但维护至少3年以上的.那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码.这里并不是贬低,像Alberl前面那个系列的 ...
- 1043 - Triangle Partitioning(数学)
1043 - Triangle Partitioning PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit ...
- ActionScript3游戏中的图像编程(连载二十四)
总文件夹:http://blog.csdn.net/iloveas2014/article/details/38304477 2.1.1 投影样式的制作 点击左側列表的"投影"系列 ...
- js动画学习(二)
四.简单动画之缓冲运动 实现速度的缓冲,即不同位置的速度不同,越靠近目标值速度越小,所以速度值与目标值与当前值之差成正比.这里要注意一个问题就是物体在运动中速度是连续变化的,不是按照整数变化的,当物体 ...
- iOS开发 点击跳转到App Store 或者 点击按钮去评价
//跳转到应用页面 NSString *str = [NSString stringWithFormat:@"http://itunes.apple.com/us/app/id%d" ...
- Java 使用Dom4j和JFileChooser实现xml文件的自主选择路径导出
直接来个简单的例子,大家一看便知. Document doc=DocumentHelper.createDocument();//创建document Element rootElement=doc. ...
- STL之queue(单向队列)
单向队列中的数据是先进先出(First In First Out,FIFO).单向队列一共6个常用函数(front().back().push().pop().empty().size()) #inc ...
- Android 开发笔记 “线程交互(Handler+Thread 和 AsyncTask)”
为什么需要线程 假设需要开发一个联网应用程序,需要从一个网址抓取网页内容,这里读取的网页地址是笔者在本地机器上自己建立的服务器地址.当然在读取网页内容的时候,可以使用HttpClient提供的API, ...
- 新发现的mbstowcs, mbstowcs_s函数,转换多字节到宽字符
http://en.cppreference.com/w/c/string/multibyte/mbstowcs https://msdn.microsoft.com/fr-fr/library/ey ...
- iOS多线程中的单例
#import "MyHandle.h" static MyHandle *handle = nil; @implementation MyHandle // 传统写法 // 此时 ...