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

1.TexturePacker-Gui

作为0.98版本的开发者,我觉得大家是幸运的,因为在0.94版本的时候这个工具叫TexturePacker,不仅灭有可视化效果,而且用起来很麻烦,所以后来人们开发除了TexturePacker-Gui,可视化版本的图片整合工具。其实这个工具很简单,就是一个 将小图片整合成一张图片,大图片打包成可查找的图片。下面我们就来介绍下TexturePacker-Gui的使用。

PS:特别注意通过TexturePacker 我们可以使用不是2的N次方的图片,彻底解决我们使用图片的不便。


(1)下载TexturePacker-Gui 3.1.0版,这个版本是稳定版,相对来说好用。

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具


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

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具


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

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具


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

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具

(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 <Sprite> 类型的方法,而且他默认返回的是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开发教程(二十三)-- <wbr>图片整合工具             libGDX开发教程(二十三)-- <wbr>图片整合工具

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

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具


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

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具


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

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具

(8)加载Pack文件。

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具

(9)创建动画。

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具
(10)创建Spirite,同时设置我们需要的大小和绘制的起点位置。

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具
(11)绘制动画和背景。

如图:

libGDX开发教程(二十三)-- <wbr>图片整合工具
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.25fatlas. 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()  {
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值