1.TexturePacker-Gui
作为0.98版本的开发者,我觉得大家是幸运的,因为在0.94版本的时候这个工具叫TexturePacker,不仅灭有可视化效果,而且用起来很麻烦,所以后来人们开发除了TexturePacker-Gui,可视化版本的图片整合工具。其实这个工具很简单,就是一个
将小图片整合成一张图片,大图片打包成可查找的图片。下面我们就来介绍下TexturePacker-Gui的使用。
PS:特别注意,通过TexturePacker 我们可以使用不是2的N次方的图片,彻底解决我们使用图片的不便。
下载地址:https://code.google.com/p/libgdx-texturepacker-gui/downloads/list
(1)下载TexturePacker-Gui 3.1.0版,这个版本是稳定版,相对来说好用。
如图:
(2)解压后你会发现里面有一个名为“test me!”的文件夹,里面有一个input 和 output 文件夹,这个2个文件夹就是负责处理图片的。在 input 文件夹中,放入你要打包的图片,在 output 中拿到你的到图片和pack文件。
如图:
(3)界面的介绍如下图,这里特别注意,尽量将文件放在提供的“test me!”文件夹下的input和output文件夹下面,这样可以减少不必要的麻烦。
如图:
(4)打包好的文件会在output文件夹中生成,其中包含一个pack的配置文件,这个文件是必须要用到的。
如图:
(5)特别注意下,这里的pack文件只是一个配置文件,可以手动修改,也就是说我们可以讲自己所要使用的图片,根据所给的pack的固定格式,可以编辑成我们需要的配置文件,在实例演示中我们也会详解如何手动配置文件。
2.TextureAtlas 类
API定义:专属于
TexturePacker封装的一个类,用于加载TexturePacker打包的图片。
功能用途:
TextureAtlas(FileHandle packFile, FileHandle imagesDir, boolean flip)
上面的第一个参数传入的是pack文件,第二个参数是图片路径,第三个参数是选择是否翻转。
常用方法:常用的方法有四个下面分别介绍给大家
(1)
createSprite(java.lang.String name)
方法
这个方法是返回一个Sprite类型的方法,而且他默认返回的是pack文件中打包的第一个 Region ,括号内部传入的是一个图片的名字。
(2)
createSprite(java.lang.String name, int index)
方法
这个方法是返回一个Sprite类型的方法,而且他默认返回的是pack文件中编号为“index ”的region,这里的index = 是一个数值,如:
index =
1、
index =
2、
index =
3、
index =
4 ,括号内部第一个传入的是一个图片的名字,也就是同样名字的图片,但是编号不同,这个可以用来做动画。
(3)
createSprites(java.lang.String name)
方法
这个方法是返回一个 Array 类型的方法,而且他默认返回的是pack文件中打包的Sprites,如果名字相同的话,也是从编号小的到编号大的开始选择,即: 例如 index = 1 - 5.
(4)
findRegion(java.lang.String name)
方法
这个方法是返回一个TextureAtlasRegion类型的方法,而且他默认返回的是pack文件中和括号内部传入的“图片的名字”相同的
TextureAtlasRegion,这里的
TextureAtlasRegion是
TextureAtlas自带的类,其实就是一个TextureRegion
。
(5)
findRegion(java.lang.String name, int index)
方法
这个方法是是返回一个和第一个参数传入的pack文件中的名字相同的许多图片中,编号为 index 的图片。这个编号自己定义。
(6)
findRegions(java.lang.String name)
方法
返回的是一个一位数组,他是由传入的相同名字的 Region 中,按由编号小的到编号大的index的顺序,依次选择Region,这个类常用来做动画。
3.实例演示
我们就用一个实例来演示一个下,如何在程序中使用我们打包好的文件,同时学习下如何使用findRegions来实现一个动画的演示。
(1)游戏素材:我们使用一个“宋茜”的图片,和一个名字叫“艾琳”的小动物的图片,前者作为背景,后者作为动画。这里的宋茜图片,是 530 X 430 分辨率的,不是2的N次方的图片。
如图:
(艾琳图片) (宋茜图片)
(2)通过前面讲到的方法,将宋茜的图片用整合工具打包,同时将艾琳图片和pack文件一同放入data文件夹中。
如图:
(3)手动编辑pack文件:我们用eclipse打开pack文件进行编辑,其中input1 这文件是工具生成的pack,我仿照这个格式,将艾琳的图片也安这个格式分割,同时编号用index,这样就可以读取了。
如图:
(7)实现代码:声明变量。
如图:
(8)加载Pack文件。
如图:
(9)创建动画。
如图:
(10)创建Spirite,同时设置我们需要的大小和绘制的起点位置。
如图:
(11)绘制动画和背景。
如图:
4.完整代码:
package com.
potato;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
public
class MyGame
implements ApplicationListener {
SpriteBatch batch;
TextureAtlas atlas;
Animation AlienAnimation;
float statetime =
0;
Sprite region;
@Override
public
void create() {
batch =
new SpriteBatch();
atlas =
new TextureAtlas(Gdx.
files.
internal(
"data/pack"));
AlienAnimation =
new Animation(
0.25f, atlas.
findRegions(
"ALIEN_JUMP_"));
region = atlas.
createSprite(
"SongQian");
region.
setPosition(
0,
0);
region.
setSize(
480,
320);
}
@Override
public
void dispose() {
}
@Override
public
void render() {
Gdx.
gl.
glClearColor(
1,
1,
1,
1);
Gdx.
gl.
glClear(GL10.
GL_COLOR_BUFFER_BIT);
statetime += Gdx.
graphics.
getDeltaTime();
batch.
begin();
region.
draw(batch);
batch.
draw(AlienAnimation.
getKeyFrame(statetime,
true),
270,
50,
200,
150);
batch.
end();
}
@Override
public
void resize(
int width,
int height) {
}
@Override
public
void pause() {
}
@Override
public
void resume() {
}
}