图片合并工具——libgdx-texturepacker-gui

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版,这个版本是稳定版,相对来说好用。

如图:

图片合并工具——libgdx-texturepacker-gui_第1张图片


(2)解压后你会发现里面有一个名为“test me!”的文件夹,里面有一个input 和 output 文件夹,这个2个文件夹就是负责处理图片的。在 input 文件夹中,放入你要打包的图片,在 output 中拿到你的到图片和pack文件。

如图:

图片合并工具——libgdx-texturepacker-gui_第2张图片


(3)界面的介绍如下图,这里特别注意,尽量将文件放在提供的“test me!”文件夹下的input和output文件夹下面,这样可以减少不必要的麻烦。

如图:

图片合并工具——libgdx-texturepacker-gui_第3张图片


(4)打包好的文件会在output文件夹中生成,其中包含一个pack的配置文件,这个文件是必须要用到的。

如图:

图片合并工具——libgdx-texturepacker-gui_第4张图片

(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次方的图片。

如图:
       (艾琳图片)                (宋茜图片)
图片合并工具——libgdx-texturepacker-gui_第5张图片         图片合并工具——libgdx-texturepacker-gui_第6张图片

(2)通过前面讲到的方法,将宋茜的图片用整合工具打包,同时将艾琳图片和pack文件一同放入data文件夹中。

如图:

图片合并工具——libgdx-texturepacker-gui_第7张图片


(3)手动编辑pack文件:我们用eclipse打开pack文件进行编辑,其中input1 这文件是工具生成的pack,我仿照这个格式,将艾琳的图片也安这个格式分割,同时编号用index,这样就可以读取了。

如图:

图片合并工具——libgdx-texturepacker-gui_第8张图片


(7)实现代码:声明变量。

如图:

图片合并工具——libgdx-texturepacker-gui_第9张图片

(8)加载Pack文件。

如图:

图片合并工具——libgdx-texturepacker-gui_第10张图片

(9)创建动画。

如图:

图片合并工具——libgdx-texturepacker-gui_第11张图片
(10)创建Spirite,同时设置我们需要的大小和绘制的起点位置。

如图:

图片合并工具——libgdx-texturepacker-gui_第12张图片
(11)绘制动画和背景。

如图:

图片合并工具——libgdx-texturepacker-gui_第13张图片
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( 00);
       
       region. setSize( 480320);
   }

   @Override
    public  void dispose() {

   }

   @Override
    public  void render() {
       Gdx. gl. glClearColor( 1111);
       Gdx. gl. glClear(GL10. GL_COLOR_BUFFER_BIT);

       statetime += Gdx. graphics. getDeltaTime();
       
       batch. begin();
       
       region. draw(batch);
       
       batch. draw(AlienAnimation. getKeyFrame(statetime,  true),  27050200, 150);
       
       batch. end();

   }

   @Override
    public  void resize( int width,  int height) {
   }

   @Override
    public  void pause() {
   }

   @Override
    public  void resume() {
   }
}

你可能感兴趣的:(libGDX游戏引擎)