您好,登录后才能下订单哦!
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& p_w_picpathOffset = 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)是设置标签的颜色。
更多精彩内容请关注史上最牛的cocos2d-x课程
《cocos2d-x手机游戏开发实战》直播课程第一期
报名Cocos2d-x直播课程还送关东升老师iOS终身会员。
课程链接:http://edu.51cto.com/pack/view/id-13.html
会员链接:http://edu.51cto.com/member/id-3.html
更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》
本书交流讨论网站:http://www.cocoagame.net
欢迎加入cocos2d-x技术讨论群:257760386、327403678
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。