Cocos2d-x 3.0标签类Label

Cocos2d-x 3.0标签类Label,第1张

概述原文转自:http://2009315319.blog.51cto.com/701759/1420014 Cocos2d-x 3.0后推出了新的标签类Label,这种标签通过使用FreeType[1]来使它在不同的平台上有相同的视觉效果。由于使用更快的缓存代理,它的渲染也将更加快速。Label提供了描边和阴影等特性。 Label类的类图如下图所示:  创建Label类静态create函数常用的有如

原文转自:http://2009315319.blog.51cto.com/701759/1420014

Cocos2d-x 3.0后推出了新的标签类Label,这种标签通过使用FreeType[1]来使它在不同的平台上有相同的视觉效果。由于使用更快的缓存代理,它的渲染也将更加快速。Label提供了描边和阴影等特性。

Label类的类图如下图所示:


创建Label类静态create函数常用的有如下几个

static Label* createWithSystemFont(conststd::string &text,//是要显示的文字                                               const std::string& Font,//系统字体名                    float FontSize,//字体的大小                    const Size& dimensions = Size::ZERO,//在屏幕上占用的区域大小,可省略                    TextHAlignment  hAlignment = TextHAlignment::left,//文字横向对齐方式,可省略                    TextVAlignment  vAlignment = TextVAlignment::top)   //文字纵向对齐方式,可省略      static Label* createWithTTF(conststd::string & text,const std::string &  Fontfile,//字体文件           float FontSize,const Size &  dimensions = Size::ZERO,//可省略           TextHAlignment          hAlignment= TextHAlignment::left,//可省略           TextVAlignment           vAlignment= TextVAlignment::top              //可省略      )           static Label* createWithTTF(constTTFConfig& ttfConfig,const std::string& text,TextHAlignment alignment =TextHAlignment::left,int maxlinewidth = 0      )      static Label* createWithBMFont(conststd::string& bmFontfilePath,//位图字体文件           const std::string&  text,const TextHAlignment& alignment =TextHAlignment::left,//可省略           int maxlinewidth = 0,//可省略           const Point&  imageOffset = Point::ZERO                                //可省略      )

其中createWithSystemFont是创建系统字体标签对象,createWithTTF是创建TTF字体标签对象,createWithBMFont是创建位图字体标签对象。

下面我们通过一个实例介绍一下,它们的使用。这个实例如图下图所示。

下面我们看看 HelloWorldScene.cpp init 函数如下:

bool HelloWorld::init()  {     if ( !Layer::init() )     {         return false;     }           Size visibleSize = Director::getInstance()->getVisibleSize();     Point origin = Director::getInstance()->getVisibleOrigin();     auto closeItem = MenuItemImage::create(                                            "Closenormal.png","CloseSelected.png",CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));            closeItem->setposition(Point(origin.x+ visibleSize.wIDth - closeItem->getContentSize().wIDth/2,origin.y + closeItem->getContentSize().height/2));              auto menu = Menu::create(closeItem,NulL);     menu->setposition(Point::ZERO);     this->addChild(menu,1);            autolabel1 = Label::createWithSystemFont("Hello World1","Arial",36);                                   ①      label1->setposition(Point(origin.x+ visibleSize.wIDth/2,origin.y + visibleSize.height - 100));      this->addChild(label1,1);          autolabel2 = Label::createWithTTF("Hello World2","Fonts/MarkerFelt.ttf",36);                       ②      label2->setposition(Point(origin.x+ visibleSize.wIDth/2,origin.y + visibleSize.height - 200));      this->addChild(label2,1);          autolabel3 = Label::createWithBMFont("Fonts/BMFont.fnt","HelloWorld3");                            ③      label3->setposition(Point(origin.x+ visibleSize.wIDth/2,origin.y + visibleSize.height - 300));      this->addChild(label3,1);          TTFConfigttfConfig("Fonts/Marker Felt.ttf",36,GlyphCollection::DYNAMIC);                                                                                                  ④      autolabel4 = Label::createWithTTF(ttfConfig,"Hello World4");                                                  ⑤      label4->setposition(Point(origin.x+ visibleSize.wIDth/2,origin.y + visibleSize.height - 400));      this->addChild(label4,1);          ttfConfig.outlinesize= 4;                                                                                                     ⑥      autolabel5 = Label::createWithTTF(ttfConfig,"Hello World5");                                                  ⑦      label5->setposition(Point(origin.x+ visibleSize.wIDth/2,origin.y + visibleSize.height - 500));      label5->enableShadow(color4B(255,255,128),Size(4,-4));                                        ⑧      label5->setcolor(color3B::RED);                                                                                                 ⑨      this->addChild(label5,1);       return true;                }

在上面的代码中第①是通过createWithSystemFont函数创建Label对象,第②行代码是通过createWithTTF是创建TTF字体标签对象,第③行代码是createWithBMFont是创建位图字体标签对象。

第④行代码TTFConfig ttfConfig("Fonts/Marker Felt.ttf",GlyphCollection::DYNAMIC)是创建一个TTFConfig结构体变量,TTFConfig结构体的定义如下:

_ttfConfig(constchar* filePath = "",//字体文件路径      int  size = 12,//字体大小      constGlyphCollection& glyphCollection = GlyphCollection::DYNAMIC,//字体库类型      constchar * customGlyphCollection = nullptr,//自定义字体库      boolusedistanceFIEld = false,//用户是否可缩放字体      intoutline = 0                                                                                                      //字体描边                 )

行代码Label::createWithTTF(ttfConfig,"Hello World4")是通过指定TTFConfig创建TTF字体标签。第行代码ttfConfig.outlinesize = 4设置TTFConfig的描边字段。第行代码Label::createWithTTF(ttfConfig,"Hello World5")是重新创建TTF字体标签。

行代码label5->enableShadow(color4B(255,-4))是设置标签的阴影效果。第行代码label5->setcolor(color3B::RED)是设置标签的颜色。

总结

以上是内存溢出为你收集整理的Cocos2d-x 3.0标签类Label全部内容,希望文章能够帮你解决Cocos2d-x 3.0标签类Label所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存