- CCLabelTTF
- CCLabelBMFont
- CCLabelAtlas
CCLabelTTF 每次調用 setString (即改變文字)的時候,一個新的OPENGL 紋理將會被創建.。這意味着setString 和創建一個新的標籤一樣慢。所以,當你需要頻繁的更新它們的時候,儘可能的不用去使用標籤對象。而應該使用CCLabelAtlas或者是CCLabelBMFont。
CCLableTTF
CCLabelTTF *label = [CCLabelTTF labelWithString:@"the string" fontName:@"Marker Felt" fontSize:21]; [layer addChild:label]; label.position = ...... // [label setString:@“change string”];
這個類使用的是系統中的字體,不需要額外往項目文件中添加字體文件。但如果你有自定義的字體也可以加到項目中,如果無法使用,可以查看一下ccConfig.h中的CC_FONT_LABEL_SUPPORT是否enable了。
解釋一下上面的參數,labelWithString 就是指生成的這個文字標籤的文字“the string”,你想寫什麼就可以些什麼, fontName就是字體名稱, fontSize是字體大小。
如果需要添加之後需要修改文字,可以使用 setString 方法。
CCLabelBMFont
CCLabelBMFont *label =[CCLabelBMFont labelWithString:@"the string" fntFile:@"konqa32-hd.fnt"]; [layer addChild:label]; label.position = ...... // [label setString:@“change string”];
這個類使用之前,需要添加好字體文件,包括一個圖片文件 (**.png) 和一個 字體座標文件 (**.fnt)。在 cocos2d的示例項目中有現成的,可以先拿過來練習一下,找的時候注意兩個文件的名稱是相同的,只是擴展名不同。
解釋一下參數, labelWithString 同上面一樣,也是指定文字。 fntFile是文件名,寫擴展名是 .fnt的那個。下面是 .fnt文件的截圖
可以看到 .fnt 文件定義了 圖像文件的名稱,以及每個字符對應的位置信息。
這個沒辦法指定字體的字號,但可以用 scale 屬性進行縮放來調整大小。就當它是sprite。
CCLabelAtlas
CCLabelAtlas *label = [CCLabelAtlas labelWithString:@"the string" charMapFile:@"fps_images.png" itemWidth:12 itemHeight:18 startCharMap:'.']; [layer addChild:label]; label.position = ...... // [label setString:@“change string”];
在項目文件中,在resourse group裏你可以找一下一個叫 fps_images.png的這個圖像文件,文件如下:
解釋一下參數,labelWithString就是字符, charMapFile 就是字符的圖像文件(這個只要圖像文件就可以了),itemWidth是每個字符的寬度,itemHeight是每個字符的高度,這個不能設錯,否則顯示的時候可能就不對了。 最後一個是你字體第一個字符的ASCII碼值,不過不用傳ASCII,而是對應的字符,
轉載2:
1、CCLabelAtlas 比CCLabel(CCLabelTTF)快很多
1、將字符串清空
CCLabelBMFont: