cocos2dx3.0添加了一种新的文本标签,这种标签不同的地方有: 使用freetype来使它在不同的平台上有相同的视觉效果;由于使用更快的缓存代理,它的渲染也将更加快速;同时它还提供了绘边、阴影等特性。
所以因为Label,我决定离开LabelTTF和LabelBMFont(这个开头你猜到了么?)
---------------------------------------------------
常用的接口一览(因为很多接口都与LabelTTFT等一样,所以就列一些我所了解的“异类”)
?
1 2 3 @H_403_40@ 4 5 6 7 8 9 10 11 12 @H_502_58@ 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //创建普通的文本标签,效果和cclabelTTF::create(...);一样。TTFConfig是什么?下面会介绍 static Label * create( const std::string& text, std::string& Fontname, float FontSize, Size& dimensions = Size::ZERO,TextHAlignment hAlignment = TextHAlignment::left, @H_502_125@ TextVAlignment vAlignment = TextVAlignment::top); //通过读取TTFConfig配置的方式创建标签, Label* createWithTTF( TTFConfig& ttfConfig,TextHAlignment alignment = TextHAlignment::left,monospace!important; Font-weight:bold!important; Font-size:1em!important; min-height:inherit!important; color:gray!important; background:none!important">int linewidth = 0); //使用.fnt的方式创建标签,类似cclabelBMFont:create(); Label* createWithBMFont( std::string& bmFontfilePath, TextHAlignment& alignment = TextHAlignment::left,monospace!important; Font-size:1em!important; min-height:inherit!important; color:black!important; background:none!important"> linewidth = 0, Point& imageOffset = Point::ZERO); //使用.png的方式创建标签,类似cclabelAtlas::create(); Label * createWithCharMap( std::string& charMapfile,monospace!important; Font-size:1em!important; min-height:inherit!important; color:black!important; background:none!important"> itemWIDth,monospace!important; Font-size:1em!important; min-height:inherit!important; color:black!important; background:none!important"> itemHeight,monospace!important; Font-size:1em!important; min-height:inherit!important; color:black!important; background:none!important"> startCharMap); virtual voID enableShadow( color3B& shadowcolor = color3B::BLACK,monospace!important; Font-size:1em!important; min-height:inherit!important; color:black!important; background:none!important"> Size &offset = Size(2,-2),monospace!important; Font-size:1em!important; min-height:inherit!important; color:black!important; background:none!important"> opacity = 0.75f,monospace!important; Font-size:1em!important; min-height:inherit!important; color:black!important; background:none!important"> blurRadius = 0); enableOutline( color4B& outlinecolor,monospace!important; Font-size:1em!important; min-height:inherit!important; color:black!important; background:none!important"> outlinesize = -1); //只支持TTF enableGlow( color3B& glowcolor); //只支持 TTF disableEffect(); //取消所有特效 //特效的种类有一下四种: enum class LabelEffect { norMAL, //普通标签(纯粹的、脱离了低级趣味的label) OUTliNE,0)!important; background:none!important">//文艺标签(有描边) SHADOW,0)!important; background:none!important">//2B标签 (有阴影) GLOW //土豪标签(有荧光) }; |
?
//TTFConfig 是一个结构体,里面包含了你要创建一个ttf的label常用配置,如下所示 typedef struct _ttfConfig { @H_502_125@ std::string FontfilePath; //文件路径 FontSize; //字体大小,默认12 GlyphCollection glyphs; //使用的字符集,默认DYNAMIC const char *customGlyphs; //呵呵 bool distanceFIEldEnabled; //我对这个的理解是:是否让文字显得紧凑?默认为false outlinesize; //字体描边的大小,默认为0 //构造函数 ... //注意:当outlinesize初始化的值大于0时,distanceFIEldEnabled则为false }TTFConfig; //GlyphCollection有四种类型: GlyphCollection { DYNAMIC, NEHE, ASCII, CUSTOM }; |
1、使用.ttf
1)创建
复制代码 TTFConfig config2("Fonts/Marker Felt.ttf",30);//初始化TTFConfig,第一个参数为字库的路径,第二个参数为字体大小 auto label2 = Label::createWithTTF(config2,"createWithTTF",TextHAlignment::left);//创建label,并向左对其 label2->setposition(Point(visibleSize.wIDth/2,300)); label2->setAnchorPoint(Point::ANCHOR_MIDDLE);//设置锚点居中 this->addChild(label2,2); |
当然了,也可以用Label创建普通的标签,效果和用cclabelTTF::create()的一样
复制代码 auto label4 = Label::create("create","Marker Felt",30);// |
2)另字体看起来紧凑点,也就是设置distanceFIEldEnabled = true
直接修改config里的distanceFIEldEnabled,方式如下:
复制代码 |
3)设置glow(荧光)效果,(我也不知道该怎么描述glow这词...)
复制代码 label2->enableGlow(color3B::GREEN);//荧光颜色为绿色 |
4)设置描边
复制代码 label2->enableOutline(color4B(255,125,255),8);//第一个参数为描边的颜色,第二个参数为描边的大小 |
效果如图所示。注意, 使用描边效果后,distanceFIEldEnabled 将变成 false,这也意味着在有描边的情况下是显示不了荧光效果的(我想太多了...)
5)设置阴影
复制代码 label2->enableShadow(color3B::RED,Size(2,0.2,0.5);//第一个参数为阴影颜色,第二个参数为阴影相对于标签的坐标,第三个参数设置透明度,第四个参数与模糊有关 |
2、使用.fnt 的label
1)创建
复制代码 auto label3 = Label::createWithBMFont("Fonts/bitmapFontTest.fnt","createWithBMFont"); label3->setposition(Point(visibleSize.wIDth/2,250)); label3->setAnchorPoint(Point::ANCHOR_MIDDLE); this->addChild(label3,2); label3->enableShadow(); |
2)设置阴影(描边和荧光只能用在.ttf 上)
复制代码 label3->enableShadow(color3B::RED); |
效果如图,可以与上图对比一下。
3、使用.png
加入我们有这么一张图,使用方法如下:
1)创建
复制代码 auto label4= Label::createWithCharMap("Fonts/costFont.png",44,'/');//参数分别为:路径;每个字符的宽和高,起始字符 label4->setposition(Point(visibleSize.wIDth/2,200)); label4->setAnchorPoint(Point::ANCHOR_MIDDLE); label4->setString("10");//设置显示的内容为”10“this->addChild(label4,2); |
2)设置阴影
复制代码 label4->enableShadow(color3B::RED); |
4、取消所有特效
复制代码 label->disableEffect();//取消所有特效 |
以上是内存溢出为你收集整理的Cocos2dx 3.0 -- 有freeType做靠山的Label全部内容,希望文章能够帮你解决Cocos2dx 3.0 -- 有freeType做靠山的Label所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)