CCLabelTTF、CCLabelAtlas和CCLabelBMFont的區別


轉自: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的改變相當於每次只改變圖片坐標。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM