最近在了解並使用Cocos2d的一些功能以便在iPhone上畫一個頁面。然而,在使用其中一個CCBitmapFontAtlas類的時候發現了一些問題。
該類可以按照一定的字體風格顯示字符。使用該類本身並沒有什么困難和問題。然而該類所需的字體文件是需要一個.fnt文件和.png文件。當調用該類生成文字時,它會去訪問.fnt文件,然后通過.fnt文件里該文字對應的坐標,到.png文件里去尋找相對應的區域,最后將該區域的圖片顯示到iPhone的界面上。而.fnt文件和.png文件要用Hiero軟件生成。問題就在這里產生了。
第一個問題是一定要從http://www.n4te.com/hiero/hiero.jnlp和http://slick.cokeandcode.com/demos/hiero.jnlp這兩個鏈接去下載。我之前從其它的鏈接下載了一個Hiero v2.0版,但是使用的時候發現它生成的.png文件里面的內容竟然是反的,在把該文件倒轉、保存后,iPhone上顯示的界面都正常,因此可以確定是我下載的Hiero軟件在生成.png文件的時候有Bug。然后到Cocos2d主頁上重新找過,在http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:labels頁面上找到上述兩個鏈接。重新下載后生成的.png文件就正常了。
第二個問題是使用Hiero軟件生成.fnt文件和.png文件的時候一定要注意,如果先生成了一對字體文件,保存名字為font_sample.fnt和font_sample.png,然后沒有關掉軟件,再生成下一對字體文件,無論是覆蓋之前的兩個文件還是重新生成兩個文件如font_sample2.fnt和font_sample.png,你都會發現新的一對字體文件里.fnt文件是更新了,但是.png文件並沒有更新,里面的文字還是第一次生成的那個字體。使用這樣的一對文件去生成iPhone的界面,只能顯示出來一堆不知所謂的線條。然而,如果再生成好第一份字體文件之后,關閉軟件,再重新打開,生成第二份字體文件的話,就不會出現該問題,估計可能是Hiero程序在創建新字體的時候沒有清掉Cache之類的問題。雖然這樣每生成一次字體都要重啟一次軟件,帶來不少麻煩,但好在該軟件的使用頻率不高,因此還可以忍受。