Cocos2d-x 3.0标签类Label

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,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", 36, 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,255,255,128),Size(4, -4))是设置标签的阴影效果。第⑨行代码label5->setColor(Color3B::RED)是设置标签的颜色。

[1] FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件。——引自于百度百科 http://baike.baidu.com/view/4579855.htm
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值