zoukankan      html  css  js  c++  java
  • libgdx学习记录9——FreeType,ttf中文显示

    前面讲到使用Hireo创建的BitmapFont以显示中文字体。这种方式效率很高,当所要显示的字的总数较少,并且大小比较固定时,可以采用这种方式。

    但是这种也有弊端:

    (1)字体大小不能随意设置,当放大时就会变形。

    (2)当所要显示的字总数较多或者经常变化时,会很麻烦。

    libgdx对中文的支持不太好,也是很多人转向其他引擎的一个原因。幸好,其扩展模块中的FreeType能够通过ttf字体来实现随意中文显示。

    FreeType是libgdx的扩展模块,创建项目时需要添加对应的jar包和对应的动态运行库。

    core工程lib中加入gdx-freetype.jar。

    desktop工程lib中加入gdx-freetype-natives.jar。

    android工程中lib加入gdx-freetype.jar,并将armeabi和armeabi-v7a中的libgx-freetype.so文件添加到对应的目录中。

    三个工程中分别将对应的jar包添加到Refrenced Libraries中。

    环境配置完成,具体事例如下:

     1 package com.fxb.freetype;
     2 
     3 import com.badlogic.gdx.ApplicationListener;
     4 import com.badlogic.gdx.Gdx;
     5 import com.badlogic.gdx.graphics.Color;
     6 import com.badlogic.gdx.graphics.GL10;
     7 import com.badlogic.gdx.graphics.g2d.BitmapFont;
     8 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
     9 
    10 import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
    11 import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData;
    12 
    13 
    14 public class FreeType implements ApplicationListener{
    15 
    16     BitmapFont[] font;
    17     //FreeTypeBitmapFontData fontData;
    18     FreeTypeFontGenerator generator;    
    19     SpriteBatch batch;
    20     
    21     @Override
    22     public void create() {
    23         // TODO Auto-generated method stub
    24         batch = new SpriteBatch();
    25         font = new BitmapFont[3];
    26         Color[] colors = { Color.RED, Color.BLUE, Color.GREEN };
    27         for( int i=0; i<3; ++i ){
    28             generator = new FreeTypeFontGenerator( Gdx.files.internal( "data/" + (i+1) + ".ttf" ) );
    29             font[i] = generator.generateFont( 25, FreeTypeFontGenerator.DEFAULT_CHARS+"今天是个好日子,大家心情都很", false );
    30             font[i].setColor( colors[i] );
    31             generator.dispose();
    32         }
    33 
    34         //fontData = generator.generateData( 25, FreeTypeFontGenerator.DEFAULT_CHARS+"今天是个好日子,大家心情都很", false );
    35     }
    36 
    37     @Override
    38     public void resize(int width, int height) {
    39         // TODO Auto-generated method stub
    40         
    41     }
    42 
    43     @Override
    44     public void render() {
    45         // TODO Auto-generated method stub
    46         
    47         Gdx.gl.glClearColor( 1, 1, 1, 1 );
    48         Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT );
    49         
    50         batch.begin();
    51         for( int i=0; i<3; ++i ){
    52             font[i].drawMultiLine( batch, "今天是个好日子,
    大家心情都很好
    Very Good! 20140521!!", 120, 100*(3-i) );
    53         }
    54         batch.end();
    55     }
    56 
    57     @Override
    58     public void pause() {
    59         // TODO Auto-generated method stub
    60         
    61     }
    62 
    63     @Override
    64     public void resume() {
    65         // TODO Auto-generated method stub
    66         
    67     }
    68 
    69     @Override
    70     public void dispose() {
    71         // TODO Auto-generated method stub
    72         batch.dispose();
    73     }
    74     
    75 }

    运行效果:

    文中用到了3个ttf文件,1.ttf为娃娃体,2.ttf为幼圆,3.ttf为行楷。

  • 相关阅读:
    Spring实现AOP的4种方式(转)
    【转】一个不错的eclipse反编译插件
    spring配置事务
    使用XFire+Spring构建Web Service(一)——helloWorld篇
    WebService到底是什么?(转)
    ContextLoaderListener作用详解(转)
    SVN检出资源文件
    ExtJS4.2学习(21)动态菜单与表格数据展示操作总结篇2
    WP8_当滚动到滚动条的70%时,自动加载数据效果实现
    WP8__从windowsphone app store 中根据app id获取应用的相关信息(下载网址及图片id等)
  • 原文地址:https://www.cnblogs.com/MiniHouse/p/3740988.html
Copyright © 2011-2022 走看看