Cocos2dx 3.0 实战之—— 重写《超级马里奥》其三 加入中文显示
在Cocos2dx项目中中文显示乱码是一件很蛋疼的事情,虽然这个在vs上是可以通过改变代码的Unicode格式解决的,但是难保在其他地方不出问题。
关于中文乱码问题,网上有很多解决办法,不过个人在这里推荐的是最简单最靠谱的解决办法,不但可以解决中文乱码问题,还可以顺便解决国际化问题。OK,直接看图
细心的亲们在前面一篇应该已经看到了,窗口上方中间的名字是乱码,明明我在代码中设置的是“超级玛丽”,如图
可得到想效果却是:
OK,这就是传说中的中文乱码。如何解决呢。这个问题曾经在一度困扰我良久。不过后来我看到这些资料:http://cn.cocos2d-x.org/tutorial/show?id=1633 之后发现,确实完美解决,这里给出我的源码: Chinese.h /** * 中文显示 */ #ifndef _CHINESE_H_ #define _CHINESE_H_ #include <string> #include <cocos2d.h> using namespace std; using namespace cocos2d; std::string ChineseWord(const char* word); #endif Chinese.cpp /** * 实现对zh_CN.xml的中文字符的显示 */ #include "Chinese.h" /** * 中文读取 */ std::string ChineseWord(const char* word) { ValueVector word_vec = FileUtils::getInstance()->getValueVectorFromFile("zh_CN.xml"); auto word_map = word_vec.at(0).asValueMap(); string wordValue = word_map.at(word).asString(); return wordValue.c_str(); } 然后你需要到Resources目录下去创建一个名叫zh_CN.xml的xml文件然后写下如下代码
<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <array> <dict> <key>game_name</key> <string>超级玛丽</string> </dict> </array> </plist> 然后保存,注意,这里需要保存为UTF-8格式。 然后我们就可以使用这个进行中文显示了。 比如在AppDelegate.cpp中加入#include "Chinese.h" 然后对中文显示的地方做如下修改 glview = GLView::create(ChineseWord("game_name"));
没错,中文问题得到解决,同样的,可以用此方法实现国际化,这里我就不多说了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |