在上一篇的文章中,我们介绍了Hiero这个非常好用工具的使用,但是LIbgdx的BitmapFont不支持多图,常用汉字

3500个,你总不能用hiero自己做吧,那怎么办呢?这其实微软早就解决这个问题了,它给我们提供了这个TTF字

库,保存汉字字,方便我们使用。

一、FreeType的使用

1、打开解压好的0.9.8版的包,找到里面的extensions文件夹

打开后,再点击进入gdx-freetype文件夹

找到gdx-freetype.jar 文件和armeabi、armeabi-v7a两个文件夹

2、找到之后,将gdx-freetype.jar文件和这两个文件夹下的libgdx-freetype.so文件复制粘贴到核心项目的libs文件夹中,如图所示:

其他的Jar包和so文件都是之前的项目必须要添加的。

3、可能大家会好奇这个libgdx.so是什么文件,为什么有就可以运行.TTF的文件了呢?而没有他就一直报错呢?

 
答:一般来说.so文件就是常说的动态链接库, 是C或C++编译出来的,在可执行文件装载或运行时,由Android操作系
统的程序来加载库。作为加载过程的一部分它负责解析外部引用(比如库)。在不同的系统上,可执行文件包含一个叫做import   directory的表,该表的每一项包含一个库的名字。根据表中记录的名字,装载程序所需要的库,然后将其加载到内存中,之后根据加载库后确定的库的地址更新可执行程序,更新后调用库中的函数或引用库中的数据。这就是.so文件的原理作用。
 
 
 
二、FreeTypeFontGenerator和FreeTypeBitmapFontData
 
 
1、FreeTypeFontGenerator用途
 
   负责保存和解析“.ttf”格式文件,一般都配合 FreeTypeBitmapFontData 来使用。如下图:
 
注意: 这里要特别注意一下,如果是你下载的是“中文名.ttf”,使用的时候一定要将文件名改成“英文名.ttf ”,这是
因为 LibGdx读取文件的时候并不支持中文文件名,否则会报错。
 
 
2、FreeTypeBitmapFontData用途
 
负责处理FreeTypeGenerator的数据,和 BitmapFontData 类似 。
 
      在FreeTypeBitmapFontData类有一个重要成员变量DEFAULT_CHARS ,它是作者给我们封装好的基本英文字符打开 FreeTypeBitmapFontData 你会看见如下图的变量赋值,这样即使".TTF"字库中没有英文字符,我们也可以输出英文字符的,因为作者已经给我们打包了。
注意: freetypeGenerator.generateData( int Size, some Chinese String, false)方法中“some Chinese String ”参数不允许有重复字符出现,比如这句话“今天天气晴朗”中“天”字出现了2次,这是不允许的,generateData是不允许同样字符重复加载的,否则会报错 Key with name '****' is already in map希望大家注意。
 
 
三、实现效果图
 
 
四、详细代码编写
 
package com.example.mylibgdxfont03;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData; public class MyGame implements ApplicationListener {
private BitmapFont font; private FreeTypeFontGenerator generator; private FreeTypeBitmapFontData fontData; private SpriteBatch batch; @Override
public void create() {
generator = new FreeTypeFontGenerator(Gdx.files.internal("testfont.ttf")); fontData = generator.generateData(25, generator.DEFAULT_CHARS
+ "晚风把荣华吹散,名利是如此浅薄。—我一条寻水的鱼!", false);// 这里需要把你要输出的字,全部写上,前提是不能有重复的字。 font = new BitmapFont(fontData, fontData.getTextureRegion(), false); font.setColor(Color.PINK); batch = new SpriteBatch(); } @Override
public void dispose() {
font.dispose();
generator.dispose();
batch.dispose();
} @Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.begin();
font.drawMultiLine(
batch,
"Hello Everyone: \n \n晚风把荣华吹散,\n名利是如此浅薄。",
50, 220);
font.draw(batch, "——我是一条寻水的鱼!", 150, 90); batch.end();
} @Override
public void resize(int width, int height) {
} @Override
public void pause() {
} @Override
public void resume() {
} }

freetypeGenerator.generateData( int Size, some Chinese String, false);
 
第一个参数
是字号的大小,第二个参数是中文的字符串(即汉字,需要加引号),第三个参数是翻转的状态。
 
 

【Android LibGDX游戏引擎开发教程】第08期:中文字体的显示和绘制(下)的更多相关文章

  1. 【Android LibGDX游戏引擎开发教程】第07期:中文字体的显示和绘制(上)

    在字体的显示和绘制中,Libgdx的作者(Mario Zechner,美国人)给我们提供了一个非常好用的工具 ——Hiero,那么下面就来看看它具体的使用方法. 一.Hiero工具的使用 1.Hier ...

  2. 【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用

    在上一篇文章中,我们提到了图片必须是2的n次方的问题.但是随着Libgdx的不断完善和发展,使用一些工具就 可以很好的解决了这样一个问题,但是它的功能又不仅仅只限于此,那么下面就来让我们看看Textu ...

  3. 基于libgdx游戏引擎开发的飞天猫

    闲来没事学学游戏,这是鄙人第一个小游戏——飞天猫 1,基于Android开发的小游戏,至少Android2.2以上的系统. 2,界面简洁,美观,游戏易操作,上手快. 3,可以左右摇摆手机来改变飞天猫的 ...

  4. libgdx游戏引擎教程

    第一讲:libgdx游戏引擎教程(一)性能优良的游戏引擎—libgdx http://www.apkbus.com/android-57355-1-1.html 第二讲: libgdx游戏引擎教程(二 ...

  5. 或许您还不知道的八款Android开源游戏引擎

    很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于iPhone下有诸如Cocos2d-iphone之类的免费游戏 ...

  6. [转载]或许您还不知道的八款Android开源游戏引擎

    或许您还不知道的八款Android开源游戏引擎         分类:             技术文章              2010-08-04 20:27     17430人阅读     ...

  7. Android 2D游戏引擎AndEngine配置环境

    Android 2D游戏引擎AndEngine配置环境 1.2  配置环境 在任何编程中,都需要一些软件或者硬件的支持.否则,没有硬件软件是不可能存在的,而想要编写对应语言的的程序,这需要对应语言库和 ...

  8. 【Cocos2d-x游戏引擎开发笔记(25)】XML解析

    原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/9128819 XML是一种非常重要的文件格式,由于C++对XML的支持非常完善 ...

  9. 推荐一些好用的 HTML5 & JavaScript 游戏引擎开发库

    推荐一些好用的 HTML5 & JavaScript 游戏引擎开发库 0. 引言 如果你是一个游戏开发者,并且正在寻找一个可以与 JavaScript 和 HTML5 无缝工作的游戏引擎.那么 ...

随机推荐

  1. 轻量级IOC框架Guice

    java轻量级IOC框架Guice Guice是由Google大牛Bob lee开发的一款绝对轻量级的java IoC容器.其优势在于: 速度快,号称比spring快100倍. 无外部配置(如需要使用 ...

  2. Nginx搭建反向代理服务器

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器   一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受int ...

  3. PLSQL-Developer数据库连接工具使用方法

    PLSQL-Developer数据库连接工具使用方法 该方法适用于本机未安装Oracle客户端的情况下如何让连接到数据库.经过本人亲自测试绝对可以连接.前提是您安装的版本没有问题,如您安装的版本有问题 ...

  4. 使用.net备份和还原数据库

    原文:使用.net备份和还原数据库 CSDN网友的提问http://community.csdn.net/Expert/TopicView3.asp?id=4929678C#实现SQLSERVER20 ...

  5. HP quality center 9.0 邮件设置

    [转载]HP quality center 9.0 邮件设置 (2010-09-20 10:28:03) 转载▼ 标签: 转载   原文地址:HP quality center 9.0 邮件设置作者: ...

  6. c#多线程随记回顾

    C#多线程随记回顾 1.创建多线程方式知道的有三种: ---手动创建Thread.使用线程池.使用task任务 ---手动创建Thread,分两种带参数和不带参数的帮助委托器 eg:  //帮助器委托 ...

  7. SufaceView(绘图类)

    public class MainActivity extends Activity { GrameView grameView; @Override public void onCreate(Bun ...

  8. 2014.3.12-C语言小测试

    测试代码: 学号:1402049 1.请实现一个函数,功能为使用循环输出以下的图案 void print_alpha(int n) { int i, j; for(i=0;i<n;++i){ f ...

  9. T4 Template Overview

    T4 Template Overview   T4 Template的组成 指令区:为模板转换引擎提供指令,控制模板如何被处理 Ÿ   template:模板相关的属性,debug是否可以调试:hos ...

  10. 交叉编译和使用HTOP

    1.什么是htop htop来源于top,top是Unix/linux下功能强大的性能检测工具之一,用于实时检测并统计进程的属性和状态,基于ncurses库,可上显示文字界面.但是top已经非常陈旧, ...