第一步:首先弄一个 json 文件 我这里成为 config.json 内容如下
{ "1000": { "id":1000, "desc":"中华人民共和国" }, "1001": { "id":1001, "desc":"中国人民银行" } }
第二步:添加解析 json 文件的函数 记得 首先声明一个全局的 map 容器 或者成员的 map 容器 map_ForText
int HelloWorld::parse_json() { unsigned long size = 0; unsigned char* pData = nullptr; pData = CCFileUtils::sharedFileUtils()->getFileData("config.json","rb",&size); if( !pData ) return -1; CSJson::Reader j_reader; CSJson::Value root_value; if( !j_reader.parse((const char*)pData, (const char*)(pData+size), root_value) ) { CCLOG("/n%s/n", j_reader.getFormattedErrorMessages().data()); CC_SAFE_DELETE_ARRAY(pData); return -1; } for( CSJson::Value::iterator iter=root_value.begin(); iter!=root_value.end(); ++iter ) { int id = 0; string str = ""; CSJson::Value &v = (*iter)["id"]; if( !v.empty() ) { id = v.asInt(); } v = (*iter)["desc"]; if( !v.empty() ) { str = v.asString(); } map_ForText.insert(make_pair(id,str)); } return 0; }
第三步:添加获得字符串的函数
const char* HelloWorld::get_text(int id) { CCLOG("This is HelloWorld::get_text"); auto iter = map_ForText.find(id); if( iter != map_ForText.end() ) { return (iter->second).c_str(); } return ""; }
第四步:使用cocoStudio编辑器 编辑一个界面 创建一个 文本框(UILabel) 到这个界面上 如下图
然后将其导出 ,这里我创建时命名为 NewProject 这样生成后 导出大图 将会导出文件 NewProject_1.ExportJson
第五步:把这个界面加载到 场景中并初始化 这个 UILabel 的内容 为 “中华人民共和国” (对应 .json 文件的 id 为1000)
parse_json(); //首先调用解析文件的函数 UILayer* widLayer = UILayer::create(); UIWidget* widget = CCUIHELPER->createWidgetFromJsonFile("NewProject_1.ExportJson"); UILabel* lab_text = static_cast<UILabel*>(widget->getChildByName("lab_text_info")); const char* text = get_text(1000); lab_text->setText(text); widLayer->addWidget(widget); this->addChild(widLayer);
这样之后,就会出现我们期待已久的效果,添加文件中的中文 输出到屏幕上 如下如所示:(当然在界面上我还添加了一些其他的元素 ,不过这不影响我们期待的效果)
“中华人民共和国” 即 对应 我们之前的 json 文件 id:1000 所对应的内容
初来乍到,请多赐教 …… 如有意见或建议,请留言 18310094097@163.com