Cocos2dx 学习笔记24 CCLabelTTF ,CCLabelBMFont,CCLabelAtlas
原文地址:http://www.tairan.com/archives/3558 cocos2d的支持TTF(True Type字体)标签和纹理地图集标签。 标签对象 CCLabelTTF* ttf1 =::create("Hello World","Helvetica"12 CCSizeMake(24532),255)"> CCTextAlignmentCenter); fontname是TTF字体所用的名字。您也可以使用自己的自定义TTF文件。您只需要添加ttf文件到项目。 创建标签:复杂的方式 (const char *stringfontNamefloat fontSizeCCSize &dimensionsCCTextAlignment hAlignmentCCVerticalTextAlignment vAlignment) 如果你用这种方式,你必须通过使用OpenGL纹理的尺寸。如果纹理不够大,只有部分的标签将被渲染。 可能的对齐方式: kCCTextAlignmentLeft (left alignment) kCCTextAlignmentCente center alignment kCCTextAlignmentRight right alignment) 与实现了CCLabel协议的任何对象一样,你可以使用setString方法更新它。示例: label->setString"Hello World 2"); 重要提示:每次调用SetString一个新的OpenGL纹理将被创建,这意味着SetString与创建一个新的CCLabel一样慢。所以,如果你需要经常更新CCLabel对象,不要使用它,而是考虑使用CCLabelAtlas或CCBitmapFontAtlas来代替。 颜色 .color ccc30); //or label ccc4); ccc3示例颜色 white -255 black blue green red Grey–84Brown16542Pink192203Purple160240YellowGold215) 对齐 如果你要修改对齐方式,你可以使用anchorPoint属性。示例: //left alignmentsetAnchorPointccp0.5f)); // right alignment1// center aligment (default))); 纹理地图集标签 CCLabelBMFont
介绍 建议使用CCLabelBMFont的方式来快速创建标签,原因有下面几点: 字距支持 http://www.n4te.com/hiero/hiero.jnlp(Java版) http://slick.cokeandcode.com/demos/hiero.jnlp(Java版) http://www.angelcode.com/products/bmfont/(仅适用于Windows) http://glyphdesigner.71squared.com/(仅限于Mac) http://www.bmglyph.com(仅限于Mac) http://tinyfont.com(仅限于Mac) Java编辑器与Windows的编辑器: 创建CCLabelBMFont CCLabelBMFontlabel =CCLabelBMFont(LongSentencesExample "fonts/markerFelt.fnt" sizewidth/1.5 kCCTextAlignmentCenter); 因为字体大小是固定的,你需要仔细考虑你需要的字体大小。由于纹理存储器,单独的每个大小的字体可能是低效的。在这种情况下,它缩小标签可能是有意义的,以实现不同的尺寸的大字体。由于标签仅仅是一个CCNode,你可以做到这一点通过scale属性。 操作每个字符 "Bitmap Font Atlas""bitmapFontTest.fnt"CCSpritechar_B labelgetChildByTag // character 'B'char_m 3// character 'm' LabelAtlas介绍 CCLabelAtlas是最快添加到cocos2d的标签,但它被CCBitmapFontAtlas所取代。CCLabelAtlas保持向后兼容性,但是你应该使用CCBitmapFontAtlas代替。 创建一个LabelAtlas CCLabelAtlascharMapFileunsignedintitemWidthitemHeightstartCharMap) 例子: CCLabelAtlaslabel1 create "tuffy_bold_italic-charmap.png"4864' '); charMapFile是一个包含了所有的字符的图像文件,每个字符根据其ASCII值排序,图像不能包含超过256个字符。 更新一个LabelAtlas/ BitmapFontAtlas。 ); 值得指出,更新一个CCLabelAtlas或一个CCBitmapFontAtlas的,几乎没有消耗。 :( ccp )); CCLabelTTF与CCLabelAtlas CCLabelTTF为每个标签创建一个纹理,因而CCLabelAtlas使用所提供的纹理(包含所有字符),能快速地渲染文字,因此使用CCLabelAtlas降低了内存消耗。 参考文献 Labels and Fonts(http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:labels) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |