包含cocos2dx读取json的词条
更新:2022-11-12 14:07
本文目录一览:
- cocosstudio导出的json文件怎样放到cocos2dx里面去
- cocos2dx中.json和.plist文件格式加载的不同
- [请教cocos2d-x3.2 lua 解析 JSON 的方法及使用说明,多谢](#请教cocos2d-x3.2 lua 解析 JSON 的方法及使用说明,多谢)
- [如何在quick-cocos2d-x 中导出 CCFileUtils:getFileData](#如何在quick-cocos2d-x 中导出 CCFileUtils:getFileData)
- [cocos2dx 2.2.3版本vs2010内怎么调用cocoStudio导出的Json](#cocos2dx 2.2.3版本vs2010内怎么调用cocoStudio导出的Json)
- [c++ cocos2dx 解析json串共通方法](#c++ cocos2dx 解析json串共通方法)
cocosstudio导出的json文件怎样放到cocos2dx里面去
UI的话:
UILayer* ul = UILayer::create();
addChild(ul);
UILayout* widget = dynamic_cast<UILayout*>(GUIReader::shareReader()->widgetFromJsonFile("Json路径"));
ul->addWidget(widget);
骨骼动画的话:
CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("Export文件夹下的ExportJson文件");
CCArmature* armature = CCArmature::create("cocoStudio的文件名字");
就用过这两个,希望对你有帮助。
cocos2dx中.json和.plist文件格式加载的不同
一、.json加载
一般通过以下方式加载:
std::string data = FileUtils::getInstance()->getStringFromFile(filename);
使用 rapidjson
解析:
rapidjson::Document doc;
doc.Parse<rapidjson::kParseDefaultFlags>(data.c_str());
解析之后 doc
应该是一个数组形式的,而且是一个二维数组(或者说是一个矩阵形式)。
如果解析没有错误,可以通过 doc.size()
取得总行数,然后通过 rapidjson::Value v = doc[i]
取得每一列的值,它也是一个数组,v.size()
取得总列数,通过 const auto value = v[index];
取得具体的值,这个值可能是 NULL,可能是 int,可能是 string,可以通过 value.IsNull()
、value.IsString()
、value.IsInt()
判断并通过 value.GetString()
或 value.GetInt()
等获取该值。
二、.plist加载
一般通过以下方式加载:
ValueMap dict = FileUtils::getInstance()->getValueMapFromFile(filename);
获取最外层的 ValueMap
,该 ValueMap
里面可以嵌套其他 ValueMap
,获取内部嵌套的其他 ValueMap
,可以这样获取:
auto dataIter = dict.find("data");
if (dataIter != dict.cend() && dataIter->second.getType() == Value::Type::MAP) {
const auto data = dataIter->second.asValueMap();
}
请教cocos2d-x3.2 lua 解析 JSON 的方法及使用说明,多谢
// a static method
Sprite* HelloWorld::maskedSpriteWithSprite(Sprite* textureSprite, Sprite* maskSprite)
{
// 1
RenderTexture * rt = RenderTexture::create(maskSprite->getContentSize().width, maskSprite->getContentSize().height);
// 2
maskSprite->setPosition(maskSprite->getContentSize().width / 2, maskSprite->getContentSize().height / 2);
textureSprite->setPosition(textureSprite->getContentSize().width / 2, textureSprite->getContentSize().height / 2);
// 3
maskSprite->setBlendFunc(BlendFunc{GL_ONE, GL_ZERO});
textureSprite->setBlendFunc(BlendFunc{GL_DST_ALPHA, GL_ZERO});
// 4
rt->begin();
maskSprite->visit();
textureSprite->visit();
rt->end();
// 5
Sprite *retval = Sprite::createWithTexture(rt->getSprite()->getTexture());
retval->setFlippedY(true);
return retval;
}
如何在quick-cocos2d-x 中导出 CCFileUtils:getFileData
在将 cocos2d-x 制作的一个 Demo 移植到 quick-cocos2d-x 时,我碰到了读取外部文件的问题。
这个 Demo 使用一个 JSON 文件作为数据文件,在 cocos2d-x 中,我使用 CCFileUtils::getFileData
来读取这个 JSON 文件。
查看了一下 [quick-cocos2d-x]/lib/luabinding/cocos2dx/platform/CCFileUtils.tolua
发现其中并没有导出 getFileData
方法。
可以使用 Lua 的 io
库来读取,例如这样:
io.input("res/fightdata.json")
local __jsonTxt = io.read("*all")
print(__jsonTxt)
local __json = json.decode(__jsonTxt)
print(__json.actions)
cocos2dx 2.2.3版本vs2010内怎么调用cocoStudio导出的Json
UI的话:
UILayer* ul = UILayer::create();
addChild(ul);
UILayout* widget = dynamic_cast<UILayout*>(GUIReader::shareReader()->widgetFromJsonFile("Json路径"));
ul->addWidget(widget);
骨骼动画的话:
CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("Export文件夹下的ExportJson文件");
CCArmature* armature = CCArmature::create("cocoStudio的文件名字");
就用过这两个,希望对你有帮助。
c++ cocos2dx 解析json串共通方法
如果 json 串格式相同,只是参数不同,可以写一个通用解析函数即可。如果是不同的 json 串格式,那就得一一写了。