首页 > 代码库 > 【开源java游戏框架libgdx专题】-08-中文显示与绘制

【开源java游戏框架libgdx专题】-08-中文显示与绘制

libgdx虽然是由美国人Mario Zechner(即BadlogicGames)写的开源引擎,由于Libgdx底层是用OpenGL实现的,所以Libgdx是可以支持中文的,在libgdx中的汉字都是通过贴图的方式显示,使用BitmapFont和SpriteBatch组合来完成文字的绘制,构造BitmapFont时需要一个描述文字构成的fnt文件,和一个提供文字图片的png文件。因此显示中文,归根结底就是读取一个包含中文信息的.fnt文件和相应的.png文件并展示出来的问题。
使用hiero.jar
技术分享
 
注意:如果你要使用的字,只能是.fnt文件里面存在的文字,否则是显示不出来的.比如,我文件里面有“奋斗小土豆”几个字,那么我可以在程序输出的时候写出这几个字,但是我要是想输出“杜甫很忙”这4个字,因为编辑文件里面没有这几个字,那么就显示不出来。
 
PS: 为什么要加载fnt文件?.fnt文件是做什么用的呢?
答:由于Libgdx底层是用OpenGL实现的,所以Libgdx是可以支持中文的。但是libgdx中的汉字都是通过贴图的方式显示的,我们用记事本打开 Potato.fnt文件,里面显示的部分内容(如下图),同时对照.png图片来参考下,可以发现可以很明显看出,libgdx的文字绘制是根据fnt文件获取对应文字的在png中的坐标位置,然后截取图片的相应部分进行绘制。
 
2.BitmapFont类
API介绍:呈现位图字体,包括2个文件:一个图像文件textureregion,包含符号在anglecode
bmfont文本格式,描述了每个字形是图像文件。文本是使用一个SpriteBatch画。
功能用途:渲染静态文本,同时可以设置文字颜色,文字大小等。
使用方法:我们可以手动设置文字大小和颜色以及旋转,这里使用函数设置是可以的,在Hiero里面也是可以设置的,可以自行选择哪种方法设置,new()里面的false是管理翻转的。
文字换行显示,只需要在中文字符中加入换行符(\n)即可
实例代码:
 1 package com.mygdx.drawimage; 2  3 import com.badlogic.gdx.ApplicationListener; 4 import com.badlogic.gdx.Gdx; 5 import com.badlogic.gdx.graphics.GL20; 6 import com.badlogic.gdx.graphics.g2d.BitmapFont; 7 import com.badlogic.gdx.graphics.g2d.SpriteBatch; 8 /** 9  * 显示与绘制汉字10  * @author Jack(乐智)11  * @blog dtblog.cn12  * @qq 98413718313  */14 public class UseFont implements ApplicationListener {15 16     //精灵批17     private SpriteBatch batch;18     //字体19     private BitmapFont font;20     21     @Override22     public void create() {23         font=new BitmapFont(Gdx.files.internal("data/test.fnt"),Gdx.files.internal("data/test.png"),false);//加载字体文件和字体图片24         font.setColor(0.5f,0.4f,0.6f,1);//设置颜色25         batch=new SpriteBatch();26     }27 28     @Override29     public void resize(int width, int height) {30         // TODO Auto-generated method stub31 32     }33 34     @Override35     public void render() {36         Gdx.gl.glClearColor(1, 1, 1, 1);37         Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);38         batch.begin();39         font.draw(batch, "我大你大呢", 200, 160);//绘制字体40         font.draw(batch, "我大\n你大呢", 200, 360);//绘制字体,使用转义字符换行41         batch.end();42     }43 44     @Override45     public void pause() {46         // TODO Auto-generated method stub47 48     }49 50     @Override51     public void resume() {52         // TODO Auto-generated method stub53 54     }55 56     @Override57     public void dispose() {58         // TODO Auto-generated method stub59 60     }61 62 }
效果:
 
 技术分享

原文由博主 乐智 编辑撰写,版权归博主所有。

原文地址 http://www.dtblog.cn/1139.html 转载请注明出处!

【开源java游戏框架libgdx专题】-08-中文显示与绘制