Cocos2d-x 3.0标签类Label

前端之家收集整理的这篇文章主要介绍了Cocos2d-x 3.0标签类Label前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

Label@H_404_5@类的类图如下图所示:@H_404_5@


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

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                                //可省略  
    )

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

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

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

@H_404_5@@H_404_5@

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;  
              }

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

@H_404_5@

@H_404_5@第④行代码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                                                                                                      //字体描边  
               )

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

第@H_404_5@⑧@H_404_5@代码@H_404_5@label5->enableShadow(Color4B(255,-4))@H_404_5@是设置标签的阴影效果。第@H_404_5@⑨@H_404_5@代码@H_404_5@label5->setColor(Color3B::RED)@H_404_5@是设置标签的颜色。@H_404_5@

猜你在找的Cocos2d-x相关文章