环境: win7 64位 vs2012 Cocos2dx 3.0rc1
模拟器 显示没有问题 编译android时 出现了问题
-------------------------------------------分割线-----------------------------------------------
忙了一下午,查了N多资料 总算是解决了, 模拟器运行正常,android真机调试正常,解决方法:
1.首先需要把字符串转换成UTF8(代码如下):
void Tools::WStrToUTF8(std::string& dest, const wstring& src){
dest.clear();
for (size_t i = 0; i < src.size(); i++){
wchar_t w = src*;
if (w <= 0x7f){
dest.push_back((char)w);
}else if (w <= 0x7ff){
dest.push_back(0xc0 | ((w >> 6)& 0x1f));
dest.push_back(0x80| (w & 0x3f));
}else if (w <= 0xffff){
dest.push_back(0xe0 | ((w >> 12)& 0x0f));
dest.push_back(0x80| ((w >> 6) & 0x3f));
dest.push_back(0x80| (w & 0x3f));
}else if (sizeof(wchar_t) > 2 && w <= 0x10ffff){
dest.push_back(0xf0 | ((w >> 18)& 0x07)); // wchar_t 4-bytes situation
dest.push_back(0x80| ((w >> 12) & 0x3f));
dest.push_back(0x80| ((w >> 6) & 0x3f));
dest.push_back(0x80| (w & 0x3f));
}else{
dest.push_back('?');
}
}
}
string Tools::FontToUTF8(const std::wstring& str){
string result;
WStrToUTF8(result, str);
return result;
}
```
2.声明一个lable:
auto label4 = Label::create(Tools::FontToUTF8(L"我是一个粉刷匠,粉刷本领强,"),Tools::FontToUTF8(L"FZZYJW_1.TTF"),30, Size::ZERO,TextHAlignment::LEFT,TextVAlignment::TOP);
label4->setDimensions(300,0); // 设置宽高(ps:300为绘制宽度,后面一个参数为高度,0为时貌似为自适应 我是这样理解的!)
label4->setColor(Color3B(245,199,34)); // 设置颜色
label4->setPosition(Point(400,300)); //设置坐标
this->addChild(label4,2);
```
注意:字体文件千万不能使用中文命名, 大坑!
------------------------------------分割线 终于搞定 希望对其他人有帮助 回家洗洗睡了--------------------------------------------------------
*

为嘛整那么麻烦,中文存文件,解析后再用