一码胜万言(请看注释)

CclUtil.h

//
// CclUtil.h
// PracticeDemo
//
// Created by kodeyang on 8/1/13.
//
// #ifndef __Practice_Demo__CclUtil__
#define __Practice_Demo__CclUtil__ #include "cocos2d.h"
#include <string> using namespace cocos2d;
using namespace std; /**
* cocos2d-x 读取 Json 文件并做解析
* 依赖 jsoncpp 库。
* 注意,cocos2d-x 的 extension 中包含了另一个 json.h 头文件,
* 而 jsoncpp 所要引入的头文件也是 json.h,这就导致如果不做改名处理的话编译将很难通过,
* 我也是在将 jsoncpp 库的头文件 json.h 改成 jsoncpp.h 之后才解决编译问题的。
* 最后,不要忘记在 Header Search Paths 中将 jsoncpp 库所处的目录加上。
*/
void parse(CCLayer* in_pLyr, const char* in_pArrCharCclName); #endif /* defined(__Practice_Demo__CclUtil__) */

CclUtil.cpp

//
// CclUtil.cpp
// PracticeDemo
//
// Created by kodeyang on 8/1/13.
//
// #include "CclUtil.h"
#include "Jsoncpp.h" void parse(CCLayer* in_pLyr, const char* in_pArrCharCclName) {
CCFileUtils* t_pFileUtils = CCFileUtils::sharedFileUtils(); string t_oStrFullPath = t_pFileUtils->fullPathForFilename(in_pArrCharCclName); unsigned char* t_pArrCharBuffer = NULL;
unsigned long t_lBufferSize = 0; t_pArrCharBuffer = t_pFileUtils->getFileData(t_oStrFullPath.c_str(), "r", &t_lBufferSize);
printf("%ld", t_lBufferSize); string t_oStrContent((char*)t_pArrCharBuffer, t_lBufferSize);
printf("读取文件的内容为:%s", t_oStrContent.c_str()); Json::Value t_oValueSprites;
Json::Reader t_oReader;
t_oReader.parse(t_oStrContent, t_oValueSprites); for (int i = 0; i < t_oValueSprites.size(); i ++) {
Json::Value tmp_oValueSprite = t_oValueSprites[i]; string tmp_oStrName = tmp_oValueSprite["image"].asString();
printf("精灵所使用的图片名称为 %s\n", tmp_oStrName.c_str());
CCSprite* sprite = CCSprite::create(tmp_oStrName.c_str()); float x = tmp_oValueSprite["x"].asDouble();
float y = tmp_oValueSprite["y"].asDouble();
sprite->setPosition(ccp(x, y)); in_pLyr->addChild(sprite);
} if (t_pArrCharBuffer) {
delete [] t_pArrCharBuffer;
t_pArrCharBuffer = NULL;
}
}

QuickLayer.h

//
// QuickLayer.h
// TestSocket
//
// Created by kodeyang on 7/18/13.
//
// #ifndef TestSocket_QuickLayer_h
#define TestSocket_QuickLayer_h #include "cocos2d.h" using namespace cocos2d; class QuickLayer : public CCLayer {
public: static CCScene* scene(); CREATE_FUNC(QuickLayer); virtual bool init(); private: }; #endif

QuickLayer.cpp

//
// QuickLayer.cpp
// TestSocket
//
// Created by kodeyang on 7/18/13.
//
// #include "QuickLayer.h"
#include "CclUtil.h" CCScene* QuickLayer::scene() {
// 'scene' is an autorelease object
CCScene* scene = CCScene::create(); // 'layer' is an autorelease object
QuickLayer* layer = QuickLayer::create(); // add layer as a child to scene
scene->addChild(layer); // return the scene
return scene;
} // on "init" you need to initialize your instance
bool QuickLayer::init() { if (!CCLayer::init()) {
return false;
} parse(this, "project.ccl"); return true;
}

project.ccl

[
{
"available": true,
"clickable": false,
"desc": "描述...",
"height": 480,
"image": "bg.png",
"visible": true,
"width": 320,
"x": 160,
"y": 240,
"zorder": -999
},
{
"available": true,
"clickable": true,
"desc": "描述...",
"height": 30,
"image": "btn_ok.png",
"visible": true,
"width": 50,
"x": 155,
"y": 414,
"zorder": 1
},
{
"available": true,
"clickable": true,
"desc": "描述...",
"height": 40,
"image": "btn_options.png",
"visible": true,
"width": 80,
"x": 151,
"y": 140,
"zorder": 2
}
]

cocos2d-x 读取 json 文件并用 jsoncpp 做解析的更多相关文章

  1. Unity的Json解析<一>--读取Json文件

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50373558 作者:car ...

  2. Groovy 读取json文件,并用gson反序列化为List集合

    Groovy 读取json文件,并用gson反序列化 package com.bicycle.util import bicycle_grails.StationInfo import com.goo ...

  3. jQuery读取json文件,实现省市区/县(国标)三级联动

    最近做一个微信项目,需要用户填写所在的省市区/县,决定使用jQuery读取json文件来实现省市区/县的联动. 其实很简单,jQuery文档也有详细解释: 代码如下: html <table w ...

  4. 接口自动化(三)--读取json文件中的数据

    上篇讲到实际的请求数据放置在json文件内,这一部分记述一下python读取json文件的实现. 代码如下(代码做了简化,根据需要调优:可做一些容错处理): 1 import json 2 3 cla ...

  5. python读取json文件制作股票价格走势

  6. jquery无法读取json文件问题

    jquery无法读取json文件,如:user.json文件无法读取.把user.json文件的后缀名修改为aspx,文件内容不变,则可以读取~ 原理不懂!~~

  7. Unity 用C#脚本读取JSON文件数据

    读取JSON文件数据网上有很多方法吗,这里采用SimpleJSON,关于SimpleJSON的介绍参考以下链接:http://wiki.unity3d.com/index.php/SimpleJSON ...

  8. jqery ajax读取json文件

    json文件数据 [ {"name":"哈哈··","email":"邮箱01","gender": ...

  9. spring注解读取json文件

    开发时候在接口没有提供的时候,可以用json文件提前模拟接口数据 1.service层 package com.syp.spring.service; import java.io.File; imp ...

随机推荐

  1. sicp第1章

    牛顿迭代法求平方: (define (sqrt-iter guess x) (if (good-enough? guess x) guess (sqrt-iter (improve guess x) ...

  2. 【HDOJ】2222 Keywords Search

    AC自动机基础题. #include <iostream> #include <cstdio> #include <cstring> #include <cs ...

  3. Unity NGUI实现Tabview

    unity版本:4.5.1 NGUI版本:3.5 参考链接:http://blog.csdn.net/g__dragon/article/details/17242969,作者:CSDN G_Drag ...

  4. swiper 多个循环的实现

    swiper 最好要一一对应,最好与id关联. new Swiper('#guess .swiper-container', { pagination: '#guess .swiper-paginat ...

  5. Sudoku(回溯)

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12075   Accepted: 6026   Special Judge ...

  6. 关于DocumentCompleted事件

    关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,大概出现了以下几种情况. 1.Web ...

  7. Redis源码阅读笔记(1)——简单动态字符串sds实现原理

    首先,sds即simple dynamic string,redis实现这个的时候使用了一个技巧,并且C99将其收录为标准,即柔性数组成员(flexible array member),参考资料见这里 ...

  8. bzoj3223 Tyvj 1729 文艺平衡树(Splay Tree+区间翻转)

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2202  Solved: 1226[Submit][Sta ...

  9. 《A First Course in Probability》-chape6-随机变量的联合分布-基本概念

    之前我们探讨了一元随机变量的分布列,下面我们应该将相应的性质推广到多元随机变量的分布列,在这里我们主要以讨论二元随机变量分布列为主. 利用类比的方法,我们很容易将一元随机变量的分布列的性质推广上来. ...

  10. SRM 397(1-250pt)

    题意:对于一个长度n的数列(由1-n组成,n <= 8),每次操作可以reverse k个连续的数.问最少多少次操作可以将该数列转化成递增的数列. 解法:就是一个BFS.只是由于最开始学习BFS ...