cocos2d-x中的标签和菜单

本篇讲在cocos2d-x中制作标签和菜单

各种字符串之间的转换

首先引入Cocos2d-x中的三种字符串,各种字符串之间的转换有点繁琐,很多情况下需要根据函数字符串参数的格式来进行字符串转换。

  • const char是C风格的字符串, char表示字符串, 加上const表示指针是不可变的(字符串首地址是地址常量)。

  • std::string是C++风格的字符串,它底层封装了const char*。

  • cocos2d::__String是cocos2d-x引擎的字符串。

log()使用的字符串必须是char*类型。

1.std::string转化为const char*:

std::string name = "lulu";
std::string name2 = std::string("lulu2");
std::string* name3 = new std::string("lulu3");
const char* cstring = name.c_str();
const char* cstring2 = name2.c_str();
const char* cstring3 = name3->c_str();
log("%s, %s, %s", cstring, cstring2, cstring3);

输出:lulu, lulu2, lulu3

2.const char* 和std::string转化为cocos2d::__String

   const char* cstring = "lulu";
   std::string string = "lulu2";
   __String *name = __String::createWithFormat("%s", cstring);
   /*实际上是先把c++字符串转化为c字符串,然后转化为cocos中的字符串*/
   __String *name2 = __String::createWithFormat("%s", string.c_str());
   /*最后log()调试需要再转c字符串*/
   log("%s, %s", name->getCString(), name2->getCString());

输出:lulu, lulu2

使用标签

三种旧标签:

LabelTTF基于系统字体

Label Atlas 基于图集的标签

LabelBMFont是位图字体标签,图配有坐标

Cocos2d-x 3.x坐标类Label:

  1. 使用系统字体
static Label* createWithSystemFont(const std::string &text,const std::string& font, float fontSize) 
  1. 非系统字体
static Label* createWithTTF(const std::string & text,const std::string & fontFile, float fontSize)  

可以指定一些配置,只能针对TTF字体

static Label* createWithTTF(const TTFConfig& ttfConfig,
 const std::string& text)
  1. 跟LabelBMFont相似

局限性是只有位图上的符号,不适用于显示中文。

static Label* createWithBMFont(const std::string& bmfontFilePath,const std::string& text)

示例

//使用系统字体create label,使用代码解决中文乱码问题,代码在超链接中
	auto label1 = Label::createWithSystemFont(MyUtility::gbk_2_utf8("咏菊"), "Cambria", 62);
	label1->setPosition(Vec2(origin.<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值