天天看点

Cocos2d-x标签文乱码问题

Cocos2d-x标签文乱码问题
Cocos2d-x标签文乱码问题

helloworldscene.cpp中init函数如下

上述代码第①行是创建一个labelttf标签对象其中包括中文字符。类似的第⑤行代码是label::createwithttf创建一个label标签对象。它们都需要指定字体问题为了显示中文需要字体库文件支持中文其中第④行代码stliti.ttf字体库是华文隶书。

第②行代码是通过labelbmfont::create创建位图字体标签。第③行代码是通过label::createwithbmfont创建位图字体标签。

出现乱码或无法显示的原因是由于在windows中文环境下使用visual studio创建的源程序文件是采用gbk编码。解决方法很简单我们只需要把helloworldscene.cpp文件另存为utf-8就可以了用记事本等文本编辑工具打然后另存为utf-8就可以或者是在visual studio工具中可以选择菜单文件→高级保存选项在弹出如下图所示对话框选择编码为unicode(utf-8无签名)然后点击确定按钮保存。

Cocos2d-x标签文乱码问题

注意不能保存为unicode(utf-8带签名)。而采用unicode(utf-8无签名)的文件在程序编译的时候第⑤行代码label::createwithttf中如果包含中文有的时候会有如下编译错误

2>helloworldscene.cpp(58): errorc2001:常量中有换行符

2>helloworldscene.cpp(59): errorc2143:语法错误 :缺少“)”(在“center”的前面)

2>helloworldscene.cpp(60): errorc2059:语法错误:“)”

这是由于visual studio对于unicode(utf-8无签名)识别有误我们一般在后面添加一些英文字符或者“啊”等特殊的中文字符。

在上面的中文第①行代码在visual studio下无法编译第②行代码可以字符串后面追加“啊”编译通过并且能够正常显示。第③行代码我们在中文字符后面追加“.”(英语句号)编译通过但是“天”字不能显示。而在android和ios平台如果如果也采用utf-8那么上面的问题就不会出现能够编译和正常显示。

菜单中又包含了菜单项菜单项类是menuitem每个菜单项都有三个基本状态正常、选种和禁止。我们再回顾一下menuitem类图如下图所示。

Cocos2d-x标签文乱码问题

菜单分类是按照菜单项进行分类的从menuitem类图中可见menuitem的派生类有menuitemlabel、menuitemsprite和menuitemtoggle。其中menuitemlabel类是文本菜单它有两派生类menuitematlasfont和menuitemfont。menuitemsprite类是精灵菜单它的派生类是menuitemimage它是图片菜单menuitemtoggle类是开关菜单。

欢迎加入cocos2d-x技术讨论群257760386、327403678更多内容请关注最新cocos图书《cocos2d-x实战 c++卷》

欢迎加入cocos2d-x技术讨论群257760386

《cocos2d-x实战 c++卷》现已上线各大商店均已开售

《cocos2d-x实战 c++卷》源码及样章下载地址

欢迎关注智捷ios课堂微信公共平台

Cocos2d-x标签文乱码问题

继续阅读