青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Codejie's C++ Space

Using C++

LIBGDX: FreeTypeFontGenerator and BitmapTrueFont

 

    在剛開始敲I;P游戲的時候, 字體使用的是BitmapFont, 只要有一套字體的PNG文件就可以顯示字體數(shù)據(jù)了. 并且通過BitmapFont對象可以很好的跟Label結(jié)合在一起使用. BitmapFont中的字體從PNG文件中截取出來有很多方便的地方, 比如, 一來只需要準(zhǔn)備使用的字符即可, 這樣字體文件比較小; 二來可以定義任意的圖案來代替字符, 靈活性定制方便. 但反過來, 由于基于PNG文件, 也導(dǎo)致了BitmapFont有個兩個主要的缺陷 --

        1. 標(biāo)量字體, 放大會失真;

        2. 字符集有限, 尤其是使用中文時, 改動幾率大;

 

    好在LIBGDX還在其擴(kuò)展庫(gdx-freetype)中提供了另外一個好用的對象 --- FreeTypeFontGenerator. 通過這個對象可以加載TTF (TrueType Font), 然后產(chǎn)生BitmapFont對象就可以使用了.

    下面是FreeTypeFontGenerator對象的主要函數(shù)原型.

/** Generates a new {@link BitmapFont}, containing glyphs for the given characters. The size is expressed in pixels. Throws a
 * GdxRuntimeException in case the font could not be generated. Using big sizes might cause such an exception. All characters
 * need to fit onto a single texture.
 * @param size the size in pixels
 * @param characters the characters the font should contain
 * @param flip whether to flip the font horizontally, see {@link BitmapFont#BitmapFont(FileHandle, TextureRegion, boolean)} */
public BitmapFont generateFont (int size, String characters, boolean flip) {}
/** Generates a new {@link BitmapFont}. The size is expressed in pixels. Throws a GdxRuntimeException in case the font could not
 * be generated. Using big sizes might cause such an exception. All characters need to fit onto a single texture.
 * 
 * @param size the size of the font in pixels */
public BitmapFont generateFont (int size) {}

 

    在LIBGDX中, AssetManager是個很實(shí)用的對象, 通過它可以在游戲初始時就將資源加載或者初始化好, 使用時只需要傳遞資源名稱即可獲取相關(guān)資源. 比如, 下面代碼加載了TextureAtlas和Sound的資源.

assetManager.load(PackConfig.SCREEN_PLAY, TextureAtlas.class);
assetManager.load(PackConfig.SCREEN_MENU, TextureAtlas.class);

assetManager.load(AudioConfig.MENU_CLICK, Sound.class);
assetManager.load(AudioConfig.TRAY_CATCH, Sound.class);

    字體也是一種資源, 因此也可以通過AssetManager來加載TTF字體. 為了能使得兩者無縫鏈接, 可以模仿BitmapFont對象創(chuàng)建個BitmapTrueFont來實(shí)現(xiàn).

 

package jie.android.ip.common.ttf;

import java.util.HashMap;

import com.badlogic.gdx.assets.AssetLoaderParameters;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.utils.Disposable;

public class BitmapTrueFont implements Disposable {

	private final HashMap<Integer, BitmapFont> fontMap = new HashMap<Integer, BitmapFont>();
	
	private final FreeTypeFontGenerator generator;
	private final String chars;
	
	public BitmapTrueFont(final FreeTypeFontGenerator generator, final BitmapTrueFontParameter parameter) {
		this.generator = generator;
		this.chars = parameter.getChars();
	}
	
	@Override
	public void dispose() {
		for (final BitmapFont font : fontMap.values()) {
			if (font != null) {
				font.dispose();
			}
		}

		if (generator != null) {
			generator.dispose();
		}
	}
	
	public final BitmapFont getBitmapFont(int size) {
		if (generator == null) {
			return null;
		}
		
		BitmapFont font = fontMap.get(Integer.valueOf(size));
		if (font == null) {
			if (chars == null) {
				font = generator.generateFont(size);
			} else {
				font = generator.generateFont(size, chars, false);
			}
			fontMap.put(Integer.valueOf(size), font);
		}
		return font;
	}
	
	static public class BitmapTrueFontParameter extends AssetLoaderParameters<BitmapTrueFont> {
		private String chars = null;
		
		public BitmapTrueFontParameter() {			
		}
		
		public BitmapTrueFontParameter(final String chars) {
			this.chars = chars;
		}
		
		public final String getChars() {
			return chars;
		}
	}	
}

    OK, 現(xiàn)在可以使用下面代碼加載TTF資源了.

assetManager.load("example.ttf", BitmapTrueFont.class, new BitmapTrueFont.BitmapTrueFontParameter(null));

posted on 2014-03-09 21:03 codejie 閱讀(2017) 評論(6)  編輯 收藏 引用 所屬分類: G7I;P

評論

# re: LIBGDX: FreeTypeFontGenerator and BitmapTrueFont 2014-05-22 17:55 西米的風(fēng)

那get 怎么做 你這個構(gòu)造貌似不能調(diào)用get 得不到值啊 因?yàn)?一直generator 是null吧!! 在構(gòu)造函數(shù)里面應(yīng)該要new一個generator 把  回復(fù)  更多評論   

# re: LIBGDX: FreeTypeFontGenerator and BitmapTrueFont 2014-05-22 21:05 codejie

@西米的風(fēng)
啊..還有一個BitmapTrueFontLoader來負(fù)責(zé)這事情..  回復(fù)  更多評論   

# re: LIBGDX: FreeTypeFontGenerator and BitmapTrueFont 2014-05-23 15:34 西米的風(fēng)

恩 我也是剛接觸這個,我昨天看了下源代碼 的確還要寫一個loader 來處理,謝謝了,膜拜大神,中文游戲就是麻煩ttf資源 如果不放在assetManager里面 游戲如果轉(zhuǎn)入后臺資源就被釋放了,哎這個問題 糾結(jié)好久 再次謝謝了,看了您的文章受益匪淺!@codejie  回復(fù)  更多評論   

# re: LIBGDX: FreeTypeFontGenerator and BitmapTrueFont 2014-05-23 15:56 codejie

@西米的風(fēng)
客氣了..這里想多說一句 -- LIBGDX真的還有點(diǎn)小眾...  回復(fù)  更多評論   

# re: LIBGDX: FreeTypeFontGenerator and BitmapTrueFont 2014-05-23 16:06 西米的風(fēng)

@codejie
我想先拿來學(xué)習(xí) ,學(xué)習(xí)寫法思路,我開始的想法是先把一個搞精通,搞其他的引擎也就水到渠成,libgdx現(xiàn)在的網(wǎng)上學(xué)習(xí)資源還是很多的,哈哈,天資愚鈍只能慢慢來啦!  回復(fù)  更多評論   

# re: LIBGDX: FreeTypeFontGenerator and BitmapTrueFont 2014-05-23 17:26 codejie

@西米的風(fēng)
哈, 如此'執(zhí)迷不悟'...那很高興這些對你有用.  回復(fù)  更多評論   

公告

Using C++

導(dǎo)航

統(tǒng)計(jì)

留言簿(73)

隨筆分類(513)

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲福利免费| 亚洲最新中文字幕| 久久九九免费| 亚洲成人自拍视频| 美女亚洲精品| 欧美国产亚洲精品久久久8v| 亚洲六月丁香色婷婷综合久久| 亚洲成色999久久网站| 欧美jizzhd精品欧美喷水| 亚洲精品在线一区二区| 亚洲精品欧美日韩专区| 国产精品日日摸夜夜摸av| 久久久久九九九| 久久综合影视| 亚洲视频一区二区在线观看| 亚洲欧美日韩精品在线| 加勒比av一区二区| 亚洲第一伊人| 国产精品扒开腿做爽爽爽视频| 久久精品国产在热久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 99riav久久精品riav| 亚洲欧美日韩国产另类专区| 怡红院av一区二区三区| 一区二区高清视频在线观看| 国产亚洲成精品久久| 亚洲经典在线| 国产日韩欧美高清| 亚洲激情黄色| 国外成人在线视频| 亚洲精品日韩激情在线电影 | 亚洲色在线视频| 国产亚洲女人久久久久毛片| 亚洲国产一二三| 国产欧美va欧美va香蕉在| 亚洲国产高清aⅴ视频| 国产免费一区二区三区香蕉精| 欧美成人免费全部| 国产乱码精品一区二区三区忘忧草 | 精品电影在线观看| 一区二区高清| 亚洲精品一区二区三区蜜桃久| 亚洲欧美在线磁力| 一区二区三区国产精华| 久久免费的精品国产v∧| 午夜精品福利一区二区三区av | 蜜臀av性久久久久蜜臀aⅴ| 亚洲尤物视频网| 欧美二区在线播放| 免费人成精品欧美精品| 国产欧美日韩在线视频| 一区二区三区久久| 99国产精品私拍| 久热精品视频在线观看| 欧美一区二区性| 国产精品网曝门| 亚洲午夜视频在线观看| 亚洲私人黄色宅男| 欧美精品99| 亚洲人成在线观看一区二区| 亚洲电影一级黄| 久久一区中文字幕| 欧美电影在线观看| 亚洲国产合集| 免费欧美日韩| 亚洲国产日韩美| 妖精视频成人观看www| 欧美成熟视频| 91久久精品www人人做人人爽| 亚洲国产成人精品久久久国产成人一区| 欧美亚洲一区在线| 玖玖玖国产精品| 在线播放不卡| 欧美va日韩va| 99精品久久| 欧美一区=区| 国产中文一区| 另类春色校园亚洲| 亚洲国内自拍| 亚洲欧美中文日韩v在线观看| 欧美午夜精品理论片a级按摩 | 一本久久综合亚洲鲁鲁| 亚洲香蕉网站| 国产日韩欧美三级| 久久精品视频免费播放| 欧美成人免费网| 一区二区三区欧美| 国产精品一区视频网站| 久久九九99| 亚洲精品一区二区三区福利| 亚洲综合日韩| 好看的日韩视频| 欧美乱妇高清无乱码| 亚洲少妇中出一区| 麻豆国产精品va在线观看不卡| 亚洲人妖在线| 国产欧美精品| 免费观看不卡av| 亚洲深夜福利视频| 欧美a级片网站| 亚洲一区二区三区色| 国产在线成人| 欧美视频一区在线观看| 久久本道综合色狠狠五月| 91久久精品一区| 久久久久久亚洲精品杨幂换脸 | 亚洲大胆在线| 国产精品国产福利国产秒拍| 久久久www成人免费无遮挡大片 | 亚洲欧美日本国产有色| 在线日韩av片| 国产精品制服诱惑| 欧美激情视频一区二区三区在线播放 | 久久久久久久久一区二区| 亚洲美女毛片| 欧美成人第一页| 午夜欧美视频| 中文在线资源观看视频网站免费不卡| 国产三级精品三级| 欧美体内谢she精2性欧美| 久久综合电影一区| 欧美亚洲一区二区在线| 日韩亚洲欧美成人| 亚洲二区免费| 老色鬼久久亚洲一区二区| 小黄鸭视频精品导航| 亚洲九九精品| 亚洲青涩在线| 亚洲高清在线精品| 红桃视频一区| 国产日韩一区二区三区在线| 国产精品av免费在线观看| 欧美成年人视频网站欧美| 久久国产加勒比精品无码| 亚洲性视频网站| 一区二区三区日韩精品视频| 亚洲人www| 亚洲日本欧美天堂| 亚洲国产婷婷| 亚洲国产精品第一区二区三区| 久久婷婷综合激情| 久久综合九色综合久99| 久久久久www| 毛片一区二区| 欧美大成色www永久网站婷| 久久久久久夜| 麻豆国产精品一区二区三区| 久久一区免费| 免费在线看一区| 亚洲国产精品视频一区| 亚洲黄网站黄| 一本久道久久久| 亚洲综合另类| 久久精品99国产精品日本| 久久精品国产69国产精品亚洲| 久久成人一区二区| 久久蜜臀精品av| 欧美—级a级欧美特级ar全黄| 欧美激情中文字幕在线| 欧美色大人视频| 国产人成一区二区三区影院| 韩日欧美一区| 亚洲日本理论电影| 亚洲天堂av在线免费| 欧美一级专区免费大片| 久久女同互慰一区二区三区| 欧美高清视频一区二区三区在线观看 | 日韩视频免费观看| 亚洲一区视频在线| 久久精品三级| 欧美韩日一区二区三区| 日韩性生活视频| 欧美一区亚洲二区| 欧美国产三级| 国产精品户外野外| 在线观看成人av电影| 一区二区三区四区蜜桃| 久久精品日韩欧美| 亚洲欧洲一区二区在线观看| 亚洲在线观看视频网站| 蜜臀av国产精品久久久久| 欧美视频亚洲视频| 亚洲动漫精品| 午夜伦理片一区| 亚洲黄色影片| 久久精品国产亚洲aⅴ| 欧美日韩高清在线一区| 国内成+人亚洲| 亚洲一区国产一区| 欧美成人午夜激情在线| 亚洲欧美欧美一区二区三区| 女人香蕉久久**毛片精品| 国产喷白浆一区二区三区| 一区二区三区回区在观看免费视频| 久久精品一级爱片| 亚洲视频第一页| 欧美久色视频| 亚洲黄网站在线观看| 久久久久在线| 亚洲欧美激情四射在线日|