一码胜万言(请看注释)

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. ♫【Backbone】this

    Backbone.js Event Binding MyView = Backbone.View.extend({ events: { 'click .item': 'handleClick' }, ...

  2. Javascript面向对象编程(二):构造函数的继承 by 阮一峰

    今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = & ...

  3. ubuntu server配置xmanager

    ubuntu server配置xmanager   ubuntu是典型的多用户多任务操作系统,通过XDMCP方式可以轻松的实现远程的多用户同时登录ubuntu任务.   www.2cto.com   ...

  4. Java Topology Suite (JTS)与空间数据模型

    JTS是Java的处理地理数据的API,它提供以下功能: 实现了OGC关于简单要素SQL查询规范定义的空间数据模型 一个完整的.一致的.基本的二维空间算法的实现,包括二元运算(例如touch和over ...

  5. cf602A Two Bases

    A. Two Bases time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  6. Cleaning Shifts(区间覆盖)

    /* http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1019&ojid=1&cid=10 题目: 给定一个时 ...

  7. 从一个简单的Java单例示例谈谈并发 JMM JUC

    原文: http://www.open-open.com/lib/view/open1462871898428.html 一个简单的单例示例 单例模式可能是大家经常接触和使用的一个设计模式,你可能会这 ...

  8. 小菜学习Lucene.Net(更新3.0.3版本使用)

    花了两天的时间研究了下Lucene.Net 发现确实挺好玩.... 最新版本是3.0.3 (最后更新时间2012-10) 可惜3.0.3版本的Lucene.net无法和盘古分词 (最新版为2.3.1. ...

  9. hdu 3642 Get The Treasury(扫描线)

    pid=3642" style="">题目链接:hdu 3642 Get The Treasury 题目大意:三维坐标系,给定若干的长方体,问说有多少位置被覆盖3次 ...

  10. mysql 加入�列,改动列,删除列。

    MySQL 加入�列,改动列,删除列 ALTER TABLE:加入�,改动,删除表的列,约束等表的定义. 查看列:desc 表名; 改动表名:alter table t_book rename to ...