首页 > 代码库 > 【开源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-中文显示与绘制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。