包含cocos2dx读取json的词条

发布时间:2023-12-08

包含cocos2dx读取json的词条

更新:2022-11-12 14:07

本文目录一览:

  1. cocosstudio导出的json文件怎样放到cocos2dx里面去
  2. cocos2dx中.json和.plist文件格式加载的不同
  3. [请教cocos2d-x3.2 lua 解析 JSON 的方法及使用说明,多谢](#请教cocos2d-x3.2 lua 解析 JSON 的方法及使用说明,多谢)
  4. [如何在quick-cocos2d-x 中导出 CCFileUtils:getFileData](#如何在quick-cocos2d-x 中导出 CCFileUtils:getFileData)
  5. [cocos2dx 2.2.3版本vs2010内怎么调用cocoStudio导出的Json](#cocos2dx 2.2.3版本vs2010内怎么调用cocoStudio导出的Json)
  6. [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 串格式,那就得一一写了。