自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android游戲引擎libgdx使用教程3:繪制漢字與顯示中文

移動(dòng)開(kāi)發(fā) Android
不知大家有沒(méi)有注意過(guò)libgdx顯示漢字的問(wèn)題,其實(shí)還是非常值得關(guān)注,試想如果libgdx不支持中文,那么使用起來(lái)就很不方便了。我們來(lái)看看BitmapFont類,這是有關(guān)文字繪制的。

不知大家有沒(méi)有注意過(guò)libgdx顯示漢字的問(wèn)題,其實(shí)還是非常值得關(guān)注,試想如果libgdx不支持中文,那么使用起來(lái)就很不方便了。

我們來(lái)看看BitmapFont類,這是有關(guān)文字繪制的??匆幌略创a:

  1. public BitmapFont ()  
  2. {  
  3.      this(Gdx.files.classpath("com/badlogic/gdx/utils/arial-15.fnt"), Gdx.files.classpath("com/badlogic/gdx/utils/arial-15.png"), falsetrue);  
  4. }    

這是默認(rèn)的構(gòu)造函數(shù),可以看出它加載了兩個(gè)文件arial-15.fnt和arial-15.png

arial-15.fnt文件的部分內(nèi)容:

  1. info face="Arial" size=15 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1   
  2. common lineHeight=18 base=14 scaleW=256 scaleH=256 pages=1 packed=0   
  3. page id=0 file="arial-15.png"   
  4. chars count=189   
  5. char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=14 xadvance=4 page=0 chnl=0     
  6. char id=255 x=0 y=0 width=8 height=19 xoffset=-1 yoffset=0 xadvance=7 page=0 chnl=0     
  7. char id=254 x=8 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  8. char id=253 x=17 y=0 width=8 height=19 xoffset=-1 yoffset=0 xadvance=7 page=0 chnl=0     
  9. char id=252 x=25 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  10. char id=251 x=34 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  11. char id=250 x=43 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  12. char id=249 x=52 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  13. char id=248 x=61 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  14. char id=247 x=70 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  15. char id=246 x=79 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  16. char id=245 x=88 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  17. char id=244 x=97 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  18. char id=243 x=106 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  19. char id=242 x=115 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  20. char id=241 x=124 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  21. char id=240 x=133 y=0 width=9 height=19 xoffset=1 yoffset=0 xadvance=8 page=0 chnl=0     
  22. char id=239 x=142 y=0 width=5 height=19 xoffset=0 yoffset=0 xadvance=3 page=0 chnl=0     
  23. …    
  24.    
  25. kernings count=374   
  26. kerning first=49 second=49 amount=-1   
  27. kerning first=121 second=44 amount=-1   
  28. kerning first=121 second=46 amount=-1   
  29. kerning first=119 second=44 amount=-1   
  30. kerning first=119 second=46 amount=-1   
  31. kerning first=118 second=44 amount=-1   
  32. kerning first=118 second=46 amount=-1   
  33. kerning first=114 second=44 amount=-1   
  34. kerning first=114 second=46 amount=-1   
  35. kerning first=89 second=44 amount=-2   
  36. kerning first=89 second=45 amount=-1   
  37. kerning first=89 second=46 amount=-2   
  38. kerning first=89 second=58 amount=-1   
  39. kerning first=89 second=59 amount=-1   
  40. kerning first=89 second=65 amount=-1   
  41. kerning first=89 second=97 amount=-1   
  42. kerning first=89 second=101 amount=-1   
  43.    
  44. …    

再看看arial-15.png:

Android游戲引擎libgdx使用教程3:繪制漢字與顯示中文

可以很明顯看出,libgdx的文字繪制是根據(jù)fnt文件獲取對(duì)應(yīng)文字的在png中的坐標(biāo)位置,然后截取圖片的相應(yīng)部分進(jìn)行繪制。

那么要讓libgdx支持中文思路就很簡(jiǎn)單了,我們自己構(gòu)造fnt和png文件,其中包含我們要使用的中文即可。

作者給我們提供了一個(gè)對(duì)應(yīng)的工具:Hiero。

下載后雙擊運(yùn)行,在右側(cè)列表中選擇一個(gè)可以用的字體,然后輸入需要的中文,最好保留自動(dòng)生成的英文和符號(hào)。

Android游戲引擎libgdx使用教程3:繪制漢字與顯示中文

在右側(cè)的Effects中可以設(shè)置效果:

Android游戲引擎libgdx使用教程3:繪制漢字與顯示中文

點(diǎn)File—Save as BMFont Files,生成兩個(gè)文件,將它們拷貝到asserts文件夾。

Android游戲引擎libgdx使用教程3:繪制漢字與顯示中文

使用

  1. bitmapFont = new BitmapFont(Gdx.files.internal("cf.fnt"), Gdx.files.internal("cf.png"), false);  

指定我們生成的文件作為繪制的參考,然后繪制:

  1. bitmapFont.draw(spriteBatch, "FPS" + Gdx.graphics.getFramesPerSecond(), 5, Gdx.graphics.getHeight() - 10);  
  2. bitmapFont.draw(spriteBatch, "祝大家光棍節(jié)快樂(lè)"0, Gdx.graphics.getHeight()/2-8);    

程序運(yùn)行效果:

Android游戲引擎libgdx使用教程3:繪制漢字與顯示中文

關(guān)于多行文字,可以調(diào)用

  1. public TextBounds drawMultiLine (SpriteBatch spriteBatch, CharSequence str, float x, float y)    

或者

  1. public TextBounds drawMultiLine (SpriteBatch spriteBatch, CharSequence str, float x, float y, float alignmentWidth,HAlignment alignment)
責(zé)任編輯:閆佳明 來(lái)源: jizhuomi
相關(guān)推薦

2013-12-04 13:30:45

Android游戲引擎libgdx教程

2013-12-04 16:07:27

Android游戲引擎libgdx教程

2013-12-04 17:27:10

Android游戲引擎libgdx教程

2013-12-06 10:31:14

Android游戲引擎libgdx教程

2013-12-06 09:59:53

Android游戲引擎libgdx教程

2013-12-04 17:14:57

Android游戲引擎libgdx教程

2013-12-06 10:12:49

Android游戲引擎libgdx教程

2013-12-04 16:28:29

Android游戲引擎libgdx教程

2013-12-06 10:22:42

Android游戲引擎libgdx教程

2013-12-06 10:35:28

Android游戲引擎libgdx教程

2011-07-18 11:23:29

iPhone 游戲 動(dòng)畫(huà)

2012-12-24 09:07:09

iOSUnity3D

2011-07-18 11:07:12

iPhone 游戲 引擎

2011-07-18 10:53:09

2011-07-18 12:29:10

2011-07-18 11:39:58

iPhone 游戲 引擎

2014-06-03 09:35:19

Javalibgdx

2012-12-24 08:40:12

2014-07-15 10:34:14

Android游戲引擎

2014-07-17 11:10:19

Android開(kāi)源游戲引擎
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)