博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2d-x wp8 中文显示问题
阅读量:7231 次
发布时间:2019-06-29

本文共 2806 字,大约阅读时间需要 9 分钟。

cocos2d-x项目在wp8下中文显示不了。有两个原因:

1. 本身字符串的utf8编码, 有问题。

2. 显示中文所须要的字体,缺失。

 

要解决第二个问题非常easy,在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 = ((CCString*)chnStrings->objectForKey(key))->getCString();	return value;}const char* localizeUtil::getLocalizeFontName(){	return fontName;}const float localizeUtil::getFontSizeH1(){	return 50;}const float localizeUtil::getFontSizeH2(){	return 40;}const float localizeUtil::getFontSizeH3(){	return 30;}const float localizeUtil::getFontSizeH4(){	return 20;}const float localizeUtil::getFontSizeH5(){	return 16;}bool localizeUtil::init(){	fontNameChinese = "SimpleGB2312";	fontNameEnglish = "Arial";	resourcePath = "local/s%/strings.xml";	const char* lc = CCApplication::getInstance()->getCurrentLanguageCode();	ccLanguageType currentLanguageType = Application::getInstance()->getCurrentLanguage();	switch (currentLanguageType)	{	case kLanguageChinese:		fontName = fontNameChinese;		languageMappingFolder = "zhcn";		resourcePath = "local/zhcn/strings.xml";		break;	case kLanguageEnglish:		fontName = fontNameEnglish;		languageMappingFolder = "enus";		resourcePath = "local/enus/strings.xml";		break;	case kLanguageSpanish:		fontName = fontNameEnglish;		languageMappingFolder = "es";		resourcePath = "local/es/strings.xml";		break;	case kLanguageFrench:		fontName = fontNameEnglish;		languageMappingFolder = "fr";		resourcePath = "local/fr/strings.xml";		break;	default:		fontName = fontNameEnglish;		languageMappingFolder = "enus";		resourcePath = "local/enus/strings.xml";	}	return true;}

 

文件夹结构:

strings.xml

mode
Mode
mode_classic
Classic

 

你可能感兴趣的文章
about
查看>>
O-Bomb(数位dp)
查看>>
hdu5032 点和查询分别按极角排序 离线做+树状数组
查看>>
hdu1428 递归形式dp(记忆化搜素):A能到B的条件是A到目的地最短路大于B到目的地最短路...
查看>>
实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(三)...
查看>>
关于VC++6.0 MFC项目运行所需的动态链接库
查看>>
由system.currentTimeMillis() 获得当前的时间
查看>>
复习日记-Linux项目发布
查看>>
The 'Microsoft Jet OLEDB 4.0 Provider' is not registered on the local machine
查看>>
Java 基础源码 switch语句判断指定月份属于一年中的哪个季度
查看>>
12px以下字体显示问题
查看>>
小程序滚动条 无法滚动BUG 解决方案
查看>>
cs108 04 oop design
查看>>
win7 打开方式不能添加程序
查看>>
EasyUI-panel 内嵌页面上的js无法被执行
查看>>
pycharm运行input输入字符串报错 NameError: name 'xxx' is not defined
查看>>
微信小程序rpx单位
查看>>
Javascript读写CSS属性
查看>>
58.com qiyi
查看>>
ORACLE批量导入图片到BLOB字段
查看>>