============================================================
博文原创,转载请声明出处
============================================================
在 cocos2d 中有三个类可以在层或精灵中添加文字:
CCLabelTTF
CCLabelBMFont
CCLabelAtlas
- CCLabelTTF
CCLabelTTF *label = [CCLabelTTF labelWithString:@"the string" fontName:@"Marker Felt" fontSize:21];
[layer addChild:label];
label.position = ccp(100,100);
[label setString:@“change string”]; //修改文字的方法
这个类使用的是系统中的字体,不需要额外往项目文件中添加字体文件。但如果你有自定义的字体也可以加到项目中,如果无法使用,可以查看一下ccConfig.h中的CC_FONT_LABEL_SUPPORT是否enable了。
- CCLabelBMFont
CCLabelBMFont *scoreLabel = [CCLabelBMFont labelWithString:[NSString stringWithFormat:kGAME_SCORE_MODEL,0,kLIFE_INIT] fntFile:@"futura-48.fnt"];
[self addChild:scoreLabel z:zScoreLablel tag:tScoreLabel];
scoreLabel.position = ccp(screenWidth/2-20,screenHeight-100);
fntFile是文件名,写扩展名是 .fnt的那个。 可以看到 .fnt 文件定义了 图像文件的名称,以及每个字符对应的位置信息。 这个没办法指定字体的字号,但可以用 scale 属性进行缩放来调整大小。就当它是sprite。
- CCLabelAtlas
CCLabelAtlas *label = [CCLabelAtlas labelWithString:@"12" charMapFile:@"fps_images.png" itemWidth:12 itemHeight:18 startCharMap:'.'];
[layer addChild:label];
label.position = ccp(100,100);
[label setString:@“34”];
在项目文件中,在resourse group里你可以找一下一个叫 fps_images.png的这个图像文件,所以,这个只能显示上面这个12个字符,abcd什么的就不行了。
解释一下参数,labelWithString就是字符,charMapFile 就是字符的图像文件(这个只要图像文件就可以了),itemWidth是每个字符的宽度,itemHeight是每个字符的高度,这个不能设错,否则显示的时候可能就不对了。最后一个是起始字符,它是使用这个其实字符来对应字符和图像关系的。
- 汉字的显示
由于汉字的结构复杂,词汇庞大,综上所属,三种字体中唯一适合显示汉字的只有CCLabelTTF一种。我找到了一个网站提供了详细的IOS字体支持情况,而且各种字体名称也很详细,在调试UI时候很有用,http://iosfonts.com/