资源描述:
《游戏开发引擎—cocos2d-x显示中文与字幕滚动--之游戏开发《赵云要格斗》》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、游戏开发引擎—Cocos2d-x显示中文与字幕滚动--之游戏开发《赵云要格斗》(14)本文检索关键词:游戏引擎,游戏开发引擎,cocos引擎html5游戏开发本文将要解决Cocos2d-x中显示中文时出现乱码的情形,并且实现一个字幕滚动的功能,这个功能是通过遮罩来实现的。Cocos2d-x版本:2.2.5工程环境:windows7+VS2010打开方式:将工程放在Cocos2d-x安装目录下的project文件夹下用VS打开先来看看效果:在windows环境下使用visualstudio开发Cocos2d-x,由于visualstudio默认编码为GBK格式,而cocos2d-
2、x引擎默认编码为UTF-8,如果有用到中文,在游戏运行时有可能会出现乱码的情况,这个问题一般有三种解决方案,如下:(1)将源码文件保存为utf-8格式(不建议,治标不治本)(2)自己编写编码转换代码,在用到中文的地方手动转换(3)将显示文本单独保存为文本文件(该文件编码为utf-8),由系统统一模块管理文本读取显示,建议使用这种方式,便于后期系统维护,并实现国际化。第一种方式很简单就不不介绍了,下面将对第2种进行介绍。第3种还没写好。一、自己编写编码转换代码,在用到中文的地方手动转换。Cocos2d-x的开发包内置了用于编码转换的iconv库,头文件"iconv.h"。icon
3、v命令可以将一种已知的字符集文件转换成另一种已知的字符集文件。它的作用是在多种国际编码格式之间进行文本内码的转换。1、直接把代码写进要用到的地方如果是只能到一次的话,推荐可以这么做。(1)首先,新建一个工程,然后在HelloWorldScene.cpp中添加头文件#include"iconv/iconv.h"/,(2)然后在HelloWorldScene.cpp添加全局函数(记得要把它们放在所有函数的最上头,要不就是最上头再定义函数一下)1234bool IConvConvert(const char *from_charset, const char *to_charset,
4、 const char *inbuf, int inlen, char *outbuf, int outlen) { iconv_t cd = iconv_open(to_charset, from_charset); 567891011121314151617 if (cd == 0) return false; const char **pin = &inbuf; char **pout = &outbuf; memset(outbuf,0,outlen); size_t ret = iconv(cd,pin,(s
5、ize_t *)&inlen,pout,(size_t *)&outlen); iconv_close(cd); return ret == (size_t)(-1) ? false : true; } std::string IConvConvert_GBKToUTF8(const std::string& str) { const char* textIn = str.c_str(); char textOut[256]; bool ret = IConvConvert("gb2312", "utf-8", te
6、xtIn, strlen(textIn),textOut, 256); return ret ? std::string(textOut) : std::string(); }1819运行之后报错:errorLNK2019:无法解析的外部符号_libiconv_closeerrorLNK2019:无法解析的外部符号_libiconverrorLNK2019:无法解析的外部符号_libiconv_openfatalerrorLNK1120:3个无法解析的外部命令解决方法:因为你没有加libiconv.lib文件 在工程属性->配置属性->链接器->输入->附加依赖项添
7、加libiconv.lib如下:(3)用法:在用到的地方,我这里是在init()里添加12std::string str =IConvConvert_GBKToUTF8("我是林炳文Evankaka~~欢迎来到我的世界~~~"); 345CCLabelTTF* pLabel = CCLabelTTF::create(str.c_str(), "Arial", 24); pLabel->setPosition(ccp(origin.x + visibleSize.width/2,