cocos2d-x 读取 json 文件并用 jsoncpp 做解析
一码胜万言(请看注释)
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 做解析的更多相关文章
- Unity的Json解析<一>--读取Json文件
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50373558 作者:car ...
- Groovy 读取json文件,并用gson反序列化为List集合
Groovy 读取json文件,并用gson反序列化 package com.bicycle.util import bicycle_grails.StationInfo import com.goo ...
- jQuery读取json文件,实现省市区/县(国标)三级联动
最近做一个微信项目,需要用户填写所在的省市区/县,决定使用jQuery读取json文件来实现省市区/县的联动. 其实很简单,jQuery文档也有详细解释: 代码如下: html <table w ...
- 接口自动化(三)--读取json文件中的数据
上篇讲到实际的请求数据放置在json文件内,这一部分记述一下python读取json文件的实现. 代码如下(代码做了简化,根据需要调优:可做一些容错处理): 1 import json 2 3 cla ...
- python读取json文件制作股票价格走势
- jquery无法读取json文件问题
jquery无法读取json文件,如:user.json文件无法读取.把user.json文件的后缀名修改为aspx,文件内容不变,则可以读取~ 原理不懂!~~
- Unity 用C#脚本读取JSON文件数据
读取JSON文件数据网上有很多方法吗,这里采用SimpleJSON,关于SimpleJSON的介绍参考以下链接:http://wiki.unity3d.com/index.php/SimpleJSON ...
- jqery ajax读取json文件
json文件数据 [ {"name":"哈哈··","email":"邮箱01","gender": ...
- spring注解读取json文件
开发时候在接口没有提供的时候,可以用json文件提前模拟接口数据 1.service层 package com.syp.spring.service; import java.io.File; imp ...
随机推荐
- Unity 小地图制作插件NJG MiniMap的简单使用
unity版本:4.5.1 NJG MiniMap版本:1.5 参考链接:http://blog.csdn.net/wuming22222/article/details/37526659,作者:CS ...
- 数据结构(trie,启发式合并):HDU 5841 Alice and Bob
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABJEAAAE6CAIAAAApz1RvAAAgAElEQVR4nO3d3css1b3g8fyTdbHJbD
- Linux Zynq GPIO中断
注册中断:对每个pin进行循环遍历for (pin_num = 0; pin_num < min_t(int, ZYNQ_GPIO_NR_GPIOS, (int)chip->ngpio) ...
- Python进程、线程、协程详解
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- [分享]WPF 虚拟键盘
场景:用WPF做触屏的软件难免会需要用户输入的问题,至少是简单的数字,这个时候就免不了需要键盘输入. 思路:既然是虚拟键盘,那么我的目的就是模拟键盘输入即可. 1.模拟键盘输入 模拟键盘输入?那么肯定 ...
- 完整的站内搜索Demo(Lucene.Net+盘古分词)
前言 首先自问自答几个问题,以让各位看官了解写此文的目的 什么是站内搜索?与一般搜索的区别? 很多网站都有搜索功能,很多都是用SQL语句的Like实现的,但是Like无法做到模糊匹配(例如我搜索“.n ...
- Android中的Zip解压缩
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...
- 3D游戏引擎一 win32编程
Windows程序一般都等待用户进行一些操作,然后响应并採取行动. 一般来说.对win32的程序的操作都会转换为系统事件队列中的消息,如按键消息WM_KEYDOWN,WM_MOUSECLICK等传递键 ...
- uva:10340 - All in All(字符串匹配)
题目:10340 - All in All 题目大意:给出字符串s和t,问s是否是t的子串.s若去掉某些字符能和t一样,那么t是s的子串. 解题思路:匹配字符.t的每一个字符和s中的字符匹配.注意这里 ...
- git的一些概念和技巧
1. 分支代表最后三个commit(即HEAD, HEAD^和HEAD~2),前一个commit,也用HEAD~1 2. 查看一个文件的改动历史git log (--pretty=oneline) - ...