一码胜万言(请看注释)

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. java学习面向对象之static内存图解

    上一节当中描述了static的用法,以及成员变量和静态变量的区别.但是static除了可以修饰成员变量使之成为静态变量外,他还可以同时修饰函数,使之成为静态函数,我们来看一个例子: class Sta ...

  2. -_-#【Better JS Code】严格模式

    要在整个脚本中启用严格模式,可以在顶部添加如下代码: "use strict"; 这行代码看起来像是字符串,而且也没有赋值给任何变量,但其实它是一个编译指示,用于告诉支持的 Jav ...

  3. 数据结构(并查集):COGS 260. [NOI2002] 银河英雄传说

    260. [NOI2002] 银河英雄传说 ★★☆   输入文件:galaxy.in   输出文件:galaxy.out   简单对比时间限制:5 s   内存限制:128 MB [问题描述] 公元五 ...

  4. poj1038

    题目大意:网络导航? 标准的web浏览器包含向前和向后浏览最近的页面的特性,有一个方法来实现这些用两个栈来跟踪页面达到向前和向后的移动,在这个问题里面,你被要求实现这些. 以下命令需要支持: BACK ...

  5. Paxos算法 Paxos Made Simple

    Paxos算法 Paxos Made Simple Leslie Lamport 2001.11.1 简介 Paxos算法,纯文本方式描述,非常简单. 1 介绍 为 实现具有容错能力的分布式系统而提出 ...

  6. Excel2003读取sqlserver数据库表数据(图)

  7. 怎样在loop中处理异常

    怎样在loop中处理异常,而不跳出 出现符号“exception”在需要下下列之一时的解决办法; 如果sql中发生异常,我们可以用 exception       when others then d ...

  8. JSP执行过程详解

    复习JSP的概念 JSP是Java Server Page的缩写,在传统的HTML页面中加入JSP标签和java的程序片段就构成了JSP. JSP的基本语法:两种注释类型.三个脚本元素.三个元素指令. ...

  9. Unity三种截屏方法(非自带API)

    者利用了三种表现形式: 1,选择截图路径的方法 2,直接截取截屏的方法 3,截取鼠标圈选区域. 上代码,: 第一种是调用.net的类库,需要引用System.Windows.Forms.dll,在As ...

  10. IOS中UITableViewCell的重用机制原理

    创建UITableViewController子类的实例后,IDE生成的代码中有如下段落: - (UITableViewCell *)tableView:(UITableView *)tableVie ...