首页 > 代码库 > cocos2d-x wp8 中文显示问题
cocos2d-x wp8 中文显示问题
cocos2d-x项目在wp8下中文显示不了,有两个原因:
1. 本身字符串的utf8编码, 有问题。
2. 显示中文所需要的字体,缺失。
要解决第二个问题很简单,在fonts下添加一个中文字体,在显示的时候制定此中文字体
labelArcade = CCLabelTTF::create("中文字符串", "中文字体名称",字体大小);
至于第一个问题,说的是不能像上文那样直接用字符串写“中文字符串”,解决方案有gb2312ToUnicode的方法,小转换一下子。百度一搜有很多示例代码,恕不赘言,因为这种办法并不是太好--总是要做多语言的嘛,我们本来也不会直接写上中文字符串在那里。
所以,我们建一个文件,专门放置中文字符(还有相应的专门放置英语、法语、西班牙语的文件),然后通过读取文件的方式,读过来的字符串自然已经utf8编码过:
labelArcade = CCLabelTTF::create(localizeUtil::getLocalizeStringByKey("mode_arcade"), localizeUtil::getLocalizeFontName(), localizeUtil::getFontSizeH2());
另附localizeUtil的实现:
localizeUtil.h
class localizeUtil { public: static bool init(); static const char* getLocalizeStringByKey(std::string key); static const char* getLocalizeFontName(); static const float getFontSizeH1(); static const float getFontSizeH2(); static const float getFontSizeH3(); static const float getFontSizeH4(); static const float getFontSizeH5(); };
localizeUtil.cpp
#include "localizeUtil.h" #include "cocos2d.h" USING_NS_CC; static char* fontName; static char* fontNameChinese; static char* fontNameEnglish; static char* languageMappingFolder; static char* resourcePath; const char* localizeUtil::getLocalizeStringByKey(std::string key) { CCDictionary *chnStrings = CCDictionary::createWithContentsOfFile(resourcePath); const char *value = http://www.mamicode.com/((CCString*)chnStrings->objectForKey(key))->getCString();>
目录结构:
strings.xml
<dict> <key>mode</key> <string>Mode</string> <key>mode_classic</key> <string>Classic</string> </dict>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。