轉自:http://blog.sina.com.cn/s/blog_67a5e47201018tj8.html
在Cocos2d以及Cocos2d-x中,我們經常會用到CCLabelTTF以及CCLabelAtlas在層或精靈中添加文字。
其實總共有三個添加文字的類,另外一個是CCLabelBMFont,我用的不怎么多。
1. CCLabelTTF
CCLabelTTF::labelWithString(const char *label, //文字內容 const CCSize& dimensions, //范圍 CCSize(0,0)默認大小 CCTextAlignment alignment, //對齊方式 0左 1中 2右 const char *fontName, //字體名 float fontSize //字號)
CCLabelTTF是CCTextureNode的子類,通過系統字體生成label。
CCLabelTTF對象渲染比較慢,每次調用setString的時候,一個新的OpenGL紋理將被創建,這意味着setString和創建一個新的標簽一樣慢,所以當需要頻繁更新label的時候,應該選擇另外兩種文字類。
由於CCLabelTTF這個類使用的是系統中的字體,不需要額外往項目文件中添加字體文件。但如果你有自定義的字體也可以加到項目中,如果無法使用,可以查看一下
ccConfig.h中的
CC_FONT_LABEL_SUPPORT是否
enable了。
2. CCLabelAtlas
CCLabelAtlas::labelWithString(const char *label, //標簽文字內容 const char *charMapFile, //圖片路徑 unsigned int itemWidth, //元素的寬度 int unsigned itemHeight, //高度 unsigned char startCharMap //起始的字符)
引擎模板里面左下角顯示幀率的數字,就是利用CCLabelAtlas來實現的。因為幀率一直在變。
每個字符的高度和寬度不能設置錯誤,否則顯示的時候可能就不對了。最后一個起始的字符用來對應字符和圖像的關系的。
3. CCLabelBMFont
CCLabelBMFont::labelWithString(const char *str, const char *fntFile)
它是CCSpriteSheet的一個子類,對每一個字符就像一個CCSprite來對待,因此每個單獨的字符可以進行旋轉、縮放、設置透明等操作。
所有字符都是使用anchorPoint(0.5, 0.5),所以最好不要更改它,會影響渲染。
使用該類之前,需要添加好字體文件,包括一個圖片文件(AA.png)和一個字體坐標文件(AA.fnt)。兩個文件的名稱相同,只是擴展名不同。
CCLabelBMFont的改變相當於每次只改變圖片坐標。