cocos2dx-3.2------Label、LabelTTF、LabelAtlas、LabelBMFont使用之法

来源:互联网 发布:iphone eve软件 编辑:程序博客网 时间:2024/06/05 05:06
下面简单介绍Label的用法
1、使用.ttf

1)创建

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. TTFConfig config2("fonts/Marker Felt.ttf",30);//初始化TTFConfig,第一个参数为字库的路径,第二个参数为字体大小  
  2. auto label2 = Label::createWithTTF(config2,"createWithTTF",TextHAlignment::LEFT);//创建label,并向左对其  
  3. label2->setPosition(Point(visibleSize.width/2,300));  
  4. label2->setAnchorPoint(Point::ANCHOR_MIDDLE);//设置锚点居中  
  5. this->addChild(label2,2);  
当然了,也可以用Label创建普通的标签,效果和用CCLabelTTF::create()的一样

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. auto label4 = Label::create("create","Marker Felt",30);  

2)另字体看起来紧凑点,也就是设置distanceFieldEnabled = true
直接修改config里的distanceFieldEnabled,方式如下:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. TTFConfig config2("fonts/Marker Felt.ttf",30,GlyphCollection::DYNAMIC,nullptr,true);//修改config的第五个参数为true  


3)设置glow(荧光)效果

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. label2->enableGlow(Color3B::GREEN);//荧光颜色为绿色  
效果如图所示。这里有个地方要注意下,想要显示荧光效果,必须令distanceFieldEnabled = true,否则看不到效果。

4)设置描边

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. label2->enableOutline(Color4B(255,125,0,255),8);//第一个参数为描边的颜色,第二个参数为描边的大小  


5)设置阴影

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. label2->enableShadow(Color3B::RED,Size(2,-2),0.2,0.5);//第一个参数为阴影颜色,第二个参数为阴影相对于标签的坐标,第三个参数设置透明度,第四个参数与模糊有关  


2、使用.fnt 的label
1)创建

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. auto label3 = Label::createWithBMFont("fonts/bitmapFontTest.fnt""createWithBMFont");  
  2. label3->setPosition(Point(visibleSize.width/2,250));  
  3. label3->setAnchorPoint(Point::ANCHOR_MIDDLE);  
  4. this->addChild(label3,2);  
  5. label3->enableShadow();  


2)设置阴影(描边和荧光只能用在.ttf 上)
label3->enableShadow(Color3B::RED);
效果如图,可以与上图对比一下。


3、使用.png
加入我们有这么一张图,使用方法如下:


1)创建

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. auto label4= Label::createWithCharMap("fonts/costFont.png",30,44,'/');//参数分别为:路径;每个字符的宽和高,起始字符  
  2. label4->setPosition(Point(visibleSize.width/2,200));  
  3. label4->setAnchorPoint(Point::ANCHOR_MIDDLE);  
  4. label4->setString("10");//设置显示的内容为”10“this->addChild(label4,2);  


2)设置阴影
label4->enableShadow(Color3B::RED);


4、取消所有特效
label->disableEffect();//取消所有特效


下面看一个整体的效果图


代码:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. bool HelloWorld::init()    
  2. {    
  3.    if ( !Layer::init() )    
  4.    {    
  5.      return false;    
  6.    }    
  7.      
  8.    Size visibleSize = Director::getInstance()->getVisibleSize();    
  9.    Point origin = Director::getInstance()->getVisibleOrigin();    
  10.    auto closeItem = MenuItemImage::create(    
  11.                       "CloseNormal.png",    
  12.                       "CloseSelected.png",    
  13.                  CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));    
  14.      
  15.   closeItem->setPosition(Point(origin.x+ visibleSize.width - closeItem->getContentSize().width/2 ,    
  16.                 origin.y + closeItem->getContentSize().height/2));    
  17.      
  18.     
  19.    auto menu = Menu::create(closeItem, NULL);    
  20.    menu->setPosition(Point::ZERO);    
  21.    this->addChild(menu, 1);    
  22.      
  23.   autolabel1 = Label::createWithSystemFont("Hello World1","Arial", 36);                                //A    
  24.   label1->setPosition(Point(origin.x+ visibleSize.width/2,    
  25.      origin.y + visibleSize.height - 100));    
  26.   this->addChild(label1,1);    
  27.      
  28.   autolabel2 = Label::createWithTTF("Hello World2""fonts/MarkerFelt.ttf", 36);                       //B    
  29.   label2->setPosition(Point(origin.x+ visibleSize.width/2,    
  30.      origin.y + visibleSize.height - 200));    
  31.   this->addChild(label2,1);    
  32.      
  33.   autolabel3 = Label::createWithBMFont("fonts/BMFont.fnt""HelloWorld3");                          //C    
  34.   label3->setPosition(Point(origin.x+ visibleSize.width/2,    
  35.      origin.y + visibleSize.height - 300));    
  36.   this->addChild(label3,1);    
  37.      
  38.   TTFConfigttfConfig("fonts/Marker Felt.ttf",    
  39.      36,    
  40.      GlyphCollection::DYNAMIC);                                                                                               //D    
  41.   autolabel4 = Label::createWithTTF(ttfConfig, "Hello World4");                                               //E    
  42.   label4->setPosition(Point(origin.x+ visibleSize.width/2,    
  43.      origin.y + visibleSize.height - 400));    
  44.   this->addChild(label4, 1);    
  45.      
  46.   ttfConfig.outlineSize= 4;                                                                                                  //F    
  47.   autolabel5 = Label::createWithTTF(ttfConfig, "Hello World5");                                               //G    
  48.   label5->setPosition(Point(origin.x+ visibleSize.width/2,    
  49.      origin.y + visibleSize.height - 500));    
  50.   label5->enableShadow(Color4B(255,255,255,128),Size(4, -4));                                        //H   
  51.   label5->setColor(Color3B::RED);                                                                                                 //I    
  52.   this->addChild(label5,1);    
  53.      
  54.   return true;    
  55. }  

在上面的代码中//A行是通过 createWithSystemFont 函数创建 Label 对象
代码//B行是通过 createWithTTF 是创建 TTF 字体标签对象
代码//C是 createWithBMFont 是创建位图字体标签对象
代码//D行TTFConfig ttfConfig("fonts/Marker Felt.ttf", 36, GlyphCollection::DYNAMIC)是创建一个TTFConfig结构体变量,前面已经介绍这个结构体了
代码//E行Label::createWithTTF(ttfConfig,"Hello World4") 是通过指定 TTFConfig 创建 TTF 字体标签
代码//F行代码 ttfConfig.outlineSize = 4 设置 TTFConfig 的描边字段
代码//G行代码 Label::createWithTTF(ttfConfig,"Hello World5") 是重新创建 TTF 字体标签。
代码//H行代码 label5->enableShadow(Color4B(255,255,255,128),Size(4, -4)) 是设置标签的阴影效果
代码//I行代码 label5->setColor(Color3B::RED) 是设置标签的颜色
0 0
原创粉丝点击