码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-10-03 14:58:25      阅读:373      评论:0      收藏:0      [点我收藏+]

标签:

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.cn
12  * @qq 984137183
13  */
14 public class UseFont implements ApplicationListener {
15 
16     //精灵批
17     private SpriteBatch batch;
18     //字体
19     private BitmapFont font;
20     
21     @Override
22     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     @Override
29     public void resize(int width, int height) {
30         // TODO Auto-generated method stub
31 
32     }
33 
34     @Override
35     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     @Override
45     public void pause() {
46         // TODO Auto-generated method stub
47 
48     }
49 
50     @Override
51     public void resume() {
52         // TODO Auto-generated method stub
53 
54     }
55 
56     @Override
57     public void dispose() {
58         // TODO Auto-generated method stub
59 
60     }
61 
62 }
效果:
 
 技术分享

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

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

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

标签:

原文地址:http://www.cnblogs.com/AIThink/p/5929039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!