GVKun编程网logo

Cocos2d-x-------------------------------------------Label数字文字描边

8

本文将分享Cocos2d-x-------------------------------------------Label数字文字描边的详细内容,此外,我们还将为大家带来关于cocoscreator

本文将分享Cocos2d-x-------------------------------------------Label数字文字描边的详细内容,此外,我们还将为大家带来关于cocos creator 文字描边效果、cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont、cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)、Cocos2d 控件:创建一个label的相关知识,希望对你有所帮助。

本文目录一览:

Cocos2d-x-------------------------------------------Label数字文字描边

Cocos2d-x-------------------------------------------Label数字文字描边

在使用label的使用,常常需要描边数字,比如在显示道具的数量的时候

            auto label=Label::createWithTTF(StringUtils::format("%d",nCount),"FontFiles/FZY4JW.TTF",50);
            std::string strName=StringUtils::format("Label_%d",__Type);
            label->setName(strName);
            label->enableOutline(pColor,3);
            label->setPosition(nPosition);
            addChild(label);

enableOutLine,TTF类型的Label可以直接设置描边,是cocos2d-x源码自带的功能,注意第一个参数是颜色,第二个参数是描边线宽

cocos creator 文字描边效果

cocos creator 文字描边效果

公司做的微信小游戏,里面涉及文字描边的效果,找了一下,发现官方自带了一个LabelOutline脚本,只要在Label的节点上,挂上LabelOutline脚本,设置下文字和描边的颜色,描边的宽度,就OK了

cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont

cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont

CCLabelTTF CCLabelBMFont CCLabelAtlas CCLabelTTF CCLabelTTF 所以, OK, 看下它的使用方法 CCLabelTTF *label = [CCLabelTTF labelWithString:@the stringfontName:@Marker Felt fontSize:21]; [layer addChild:label]; label.position = ccp(100,100);

  • CCLabelTTF
  • CCLabelBMFont
  • CCLabelAtlas

     cclabelttf

           CCLabelTTF

           所以,

           OK, 看下它的使用方法

           CCLabelTTF *label = [CCLabelTTF labelWithString:@"the string"  fontName:@"Marker Felt"  fontSize:21];

           [layer addChild:label];

           label.position = ccp(100,100);

           [label setString:@“change string”]; //修改文字的方法


           这个类使用的是系统中的字体,不需要额外往项目文件中添加字体文件。但如果你有自定义的字体也可以加到项目中,如果无法使用,可以查看一下ccConfig.h中的CC_FONT_LABEL_SUPPORT是否enable了。  

 

     CCLabelBMFont

        CCLabelBMFont  相当于每次改变只改变了图片坐标,而CCLabelTTF要重新渲染.这个类使用之前,需要添加好字体文件,包括一个图片文件 (**.png) 和一个 字体坐标文件 (**.fnt)。

         在 cocos2d的示例项目中有现成的,可以先拿过来练习一下,找的时候注意两个文件的 名称是相同的,只是扩展名不同。

         CCLabelBMFont *label =[CCLabelBMFont labelWithString:@"the string"   fntFile:@"konqa32-hd.fnt"];

           [layer addChild:label];

           label.position = ccp(100,100);

           [label setString:@“change string”];

        fntFile是文件名,写扩展名是 .fnt的那个。下面是 .fnt文件的截图

        ...

        可以看到 .fnt 文件定义了 图像文件的名称,以及每个字符对应的位置信息。

        这个没办法指定字体的字号,但可以用  scale  属性进行缩放来调整大小。就当它是sprite。

 

   CCLabelAtlas        

        如果你用cocos2d项目模板创建过项目,那么你已经看过它的效果了,就是左下角显示帧率的数字。

        因为帧率一直在变,使用CCLabelTTF的话效率太低,因为只是数字所以也犯不上使用 CCLabelBMFont 加载那么大的文字图像,所以使用这个比较合适。

        CCLabelAtlas *label = [CCLabelAtlas labelWithString:@"12" charMapFile:@"fps_images.png" itemWidth:12 itemHeight:18 startCharMap:''.''];

          [layer addChild:label];

          label.position = ccp(100,100);

          [label setString:@“34”];

 

       在项目文件中,在resourse group里你可以找一下一个叫 fps_images.png的这个图像文件,文件如下:

        

...

       所以,这个只能显示上面这个12个字符,abcd什么的就不行了。

       解释一下参数,

       labelWithString就是字符,

       charMapFile 就是字符的图像文件(这个只要图像文件就可以了),

       itemWidth是每个字符的宽度,

       itemHeight是每个字符的高度,这个不能设错,否则显示的时候可能就不对了。

       最后一个是起始字符,它是使用这个其实字符来对应字符和图像关系的。

cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

最近在逛论坛的时候看到有的帖子说显示文本时用 cclabelTTF 不是很好,且推荐游戏中最好别用。于是网上查了查相关资料,整理了下 ,顺便也分享下

在 cocos2d 中有三个类可以在层或精灵中添加文字:

  • cclabelTTF
  • cclabelBMFont
  • cclabelAtlas

cclabelTTF

cclabelTTF每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建.。这意味着setString 和创建一个新的标签一样慢。

所以,当你需要频繁的更新它们的时候,尽可能的不用去使用标签对象。 而应该使用cclabelAtlas或者是cclabelBMFont。

OK, 看下它的使用方法

cclabelTTF *label = [cclabelTTF labelWithString:@"the string"fontName:@"Marker Felt" fontSize:21];

[layer addChild:label];

label.position = ccp(100,100);

[label setString:@“change string”]; //修改文字的方法


这个类使用的是系统中的字体,不需要额外往项目文件中添加字体文件。但如果你有自定义的字体也可以加到项目中,如果无法使用,可以查看一下ccConfig.h中的CC_FONT_LABEL_SUPPORT是否enable了。

cclabelTTF中的 setDimensions 就是设置换行的,单词也支持换行,不会在单词中间断开。

setDimensions(CCSizeMake(width,0)) //高度要设置为0 才能正确换行,否则会出现截断多余的字符串的情况


cclabelBMFont

cclabelBMFont相当于每次改变只改变了图片坐标,而cclabelTTF要重新渲染.这个类使用之前,需要添加好字体文件,包括一个图片文件 (**.png) 和一个 字体坐标文件 (**.fnt)。

在 cocos2d的示例项目中有现成的,可以先拿过来练习一下,找的时候注意两个文件的 名称是相同的,只是扩展名不同。

cclabelBMFont *label =[cclabelBMFont labelWithString:@"the string" fntFile:@"konqa32-hd.fnt"];

[layer addChild:label];

label.position =ccp(100,100);

[label setString:@“change string”];

fntFile是文件名,写扩展名是 .fnt的那个。下面是 .fnt文件的截图


可以看到 .fnt 文件定义了 图像文件的名称,以及每个字符对应的位置信息。

这个没办法指定字体的字号,但可以用 scale 属性进行缩放来调整大小。就当它是sprite。

cclabelAtlas

如果你用cocos2d项目模板创建过项目,那么你已经看过它的效果了,就是左下角显示帧率的数字。

因为帧率一直在变,使用cclabelTTF的话效率太低,因为只是数字所以也犯不上使用 cclabelBMFont 加载那么大的文字图像,所以使用这个比较合适。

cclabelAtlas *label = [cclabelAtlas labelWithString:@"12"charMapFile:@"fps_images.png"itemWidth:12itemHeight:18startCharMap:'.'];

[layer addChild:label];

label.position =ccp(100,100);

[label setString:@“34”];

在项目文件中,在resourse group里你可以找一下一个叫 fps_images.png的这个图像文件,文件如下:

所以,这个只能显示上面这个12个字符,abcd什么的就不行了。

解释一下参数,

labelWithString就是字符,

charMapFile 就是字符的图像文件(这个只要图像文件就可以了),

itemWidth是每个字符的宽度,

itemHeight是每个字符的高度,这个不能设错,否则显示的时候可能就不对了。

最后一个是起始字符,它是使用这个其实字符来对应字符和图像关系的。


原文:段旭凌博客

Cocos2d 控件:创建一个label

Cocos2d 控件:创建一个label

  
  
// auto label = Label::createWithTTF("Start Game", "fonts/Marker Felt.ttf" 24);abel->setPosition( PointvisibleSize.width/2height));thisaddChildlabel);

今天的关于Cocos2d-x-------------------------------------------Label数字文字描边的分享已经结束,谢谢您的关注,如果想了解更多关于cocos creator 文字描边效果、cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont、cocos2d 中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)、Cocos2d 控件:创建一个label的相关知识,请在本站进行查询。

本文标签: