您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx 文本label显示方法LabelBMFont,LabelAtlas,MenuItemFont

2015-01-05 11:21 549 查看

1.标签菜单项

使用字体定义的菜单项MenuItemFont

//菜单项1

MenuItemFont(用的是系统自带的字体)

//设置字体的大小

    MenuItemFont::setFontSize(30);

    //使用系统自带的Courier New字体

    MenuItemFont::setFontName("Courier New");

    //创建MenuItemFont对象

    auto *item1=MenuItemFont::create("HelloCocos");

//菜单项2

   MenuItemFont::setFontSize(50);

   MenuItemFont::setFontName("Courier New");

    //创建字体菜单项并带有回调函数

    auto *item2=MenuItemFont::create("Return",this,menu_selector(HelloWorld::turnToGameView));

 

LabelAtlas (用的资源的是图片)

当你只使用少量字符的时候,为了避免加载整个字体文件耗费内存和空间,可以使用一张做好的图片来动态加载图片中的图像来达到字体的效果。

主要功能:从事先做好的图片中根据给出的每个字符的显示大小和需要显示的字符,将其图形计算显示出来。

比如说,我们准备显示 0-9 十个数字,我们可以在一张图片中制作好这十个数字。每个数字都有相同的宽度和高度。将它保存在资源中。



 

比较重要的是,这十个数字要按照 ASCII 顺序排列,我们要设置第一个字符的 ASCII 编码,这样,Cocos2d-x 就可以直接计算出不同字符对应的图形了。

auto labelAtlas=LabelAtlas::create(s,"nums.png",18,30,'0');

或使用plist文件:auto labelAtlas=LabelAtlas::create(s,"nums.plist");



第一个参数:显示的内容:1x,你也许会奇怪为什么是1x,因为使用的png图必须是连续的,因为程序内部是议连续的scall码识别的。9的后一位的”:“,所以先实现x就得用”:“代替。

第二个参数:图片的名字

第三个参数:每一个数字的宽

第四个参数:每一个数字的高

每五个数字:开始字符

LabelAtlas* diceCount = CCLabelAtlas::create("100:", "nums_font.png", 14, 21, '0');
diceCount->setPosition(Point(visibleSize.width - 150, visibleSize.height / 2 - 50));
addChild(diceCount);

 LabelAtals对象可以使用各种动作

//菜单项2

可以利用LabelAtlas实现时钟的显示(可以增加一个计时器来达到动态变化),下面是大概的实现思路

int a=1,b=2;

int time=a*10+b;

    char s[3];

    sprintf(s,"%d",time);  //将计算后的整形数字转成字符串在显示

    auto labelAtlas=LabelAtlas::create(s,"nums.png",18,30,'0');

    auto *item3=MenuItemLabel::create(labelAtlas,this,menu_selector(HelloWorld::turnToGameView));

LabelBMFont(用的资源是.fnt文件)

//菜单项4

更灵活的类是LabelBMFont. 它支持可变宽度的字符,而且他还有一个好用的编辑器Bitmap Font Generator

auto bmLabel=LabelBMFont::create("CO","font.fnt");//CO为要显示的字符,要显示的所有字符都要在font.fnt默认路径在//Resource下

//中,font.fnt是由工具生成的Bitmap文件

//    bmLabel->runAction(RepeatForever::create(RotateTo::create(1.5f,180)));

//    bmLabel->setRotation(90);

      auto item4=MenuItemLabel::create(bmLabel,this,menu_selector(HelloWorld::turnToGameView));

  //将菜单项添加到菜单中

   auto *menu1=Menu::create(item1,item2,item3,item4,NULL);

    //竖直排列菜单项

    menu1->alignItemsVertically();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LabelBMFont LabelAtl
相关文章推荐