android遊戲開發架構libgdx的使用(十六)—使用TexturePacker工具加快開發速度

來源:互聯網
上載者:User

libgdx絕對是一個相當不錯的遊戲引擎,最近一段時間的學習我感覺收穫很多。但是我一直對於libgdx載入的圖片大小必須是2的次方感到很糾結。

如果是一張一般的圖片想在libgdx中使用的話就需要自己去用ps什麼的把映像拉一下,一兩張沒關係,但是數量大了還是有點煩。

而且拉大的圖片還需要TextureRegion來切割一下,實在麻煩。仔細看了一下libgdx的tool包,發現早有解決方案了。

具體的類是imagepacker,在com.badlogic.gdx.tools.imagepacker包之中。它可以將多張圖片合并在一張之中。同時可以通過原有檔案的檔案名稱獲得圖片資源。

這裡有幾張圖片:

將它們放在一個檔案夾中(這個檔案夾沒有其他東西了)。引用gdx-tool.jar。

代碼如下:

Settings settings = new Settings(); 
settings.alias = true;
TexturePacker.process(settings, "D:\\img", "D:\\img\\output");

在output檔案夾中可以找到兩個檔案,其中一個是合成好的圖片

另外一個名為pack,其中記錄了源檔案的位置,大小和名稱。

點擊查看pack檔案內容

將圖片和pack檔案拷貝到項目目錄。這裡說明一下,pack檔案的檔案名稱可以隨便改,合成的圖片如果需要改名的話就需要改一下pack檔案裡面的內容了。

使用時的具體類是TextureAtlas。

代碼:

package com.cnblogs.htynkn.game;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Image;

public class TexturePackerDemo implements ApplicationListener {

Stage stage;

@Override
public void create() {
stage=new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);
TextureAtlas atlas=new TextureAtlas(Gdx.files.internal("imgs/pack")); //根據pack檔案擷取所有圖片
Image image1=new Image(atlas.findRegion("14")); //擷取名為14的圖片,並建立一個Image對象
image1.scaleX=image1.scaleY=0.2f;
image1.x=image1.y=0;
Image image2=new Image(atlas.findRegion("xpic2766"));
image2.x=image2.y=40;
image2.scaleX=image2.scaleY=0.5f;
stage.addActor(image1);
stage.addActor(image2);
}

@Override
public void dispose() {
stage.dispose();
}

@Override
public void pause() {
// TODO Auto-generated method stub

}

@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}

@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub

}

@Override
public void resume() {
// TODO Auto-generated method stub

}

}

效果:

 

寫在最後:

1.使用TexturePacker的最大好處就是方便,我覺得從根本讓載入圖片大小的問題對開發人員透明了。

2.使用TexturePacker提升了效率,比起一張一張圖片載入,合并圖無疑是個很好的選擇。

3.使用TexturePacker應該注意不要盲目合并,將在一個情境中使用的圖片合并在一起,其他情境或暫時用不到的圖片合并到其他中去。我個人認為一張圖片的大小不超過1024*1024為佳。

4.TexturePacker工具用著不怎麼順手。我覺得每次建立一個java項目,然後填寫路徑很麻煩。熱心的網友做了GUI版本的。

:http://www.ctdisk.com/file/4279795

項目地址:http://code.google.com/p/libgdx-texturepacker-gui/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.