cocos2dx 使用Json(用于游戏更新)
来源:互联网 发布:.wang是什么域名 编辑:程序博客网 时间:2024/05/29 16:27
在程序缓存中存入Json,再读取Json
- #include "spine/Json.h"
- #include "cocos-ext.h"
- #include "network/HttpClient.h"
- #include "network/HttpRequest.h"
- USING_NS_CC_EXT;
- USING_NS_CC;
- using namespace std;
- const char* txtJsData = "{ \"id\":\"12\" , \"user\":\"mar\" , \"fruits\":{\"apple\":199} }";
- Json* mJs = Json_create(txtJsData);
- Json* node = mJs->child;
- while (node)
- {
- const char* getName = node->valuestring;
- log("id: %s",getName);
- node = node->next;
- }
- Json* item = Json_getItem(mJs,"fruits");
- Json* itemNode = Json_getItem(item,"apple");
- int applePrice = itemNode->valueint;
- log("applePrice: %d",applePrice);
在网络上读取Json文件
- //客户端单例
- HttpClient* client = HttpClient::getInstance();
- //请求设定
- HttpRequest* httpReq = new HttpRequest();
- //以获取的方式进行请求
- httpReq->setRequestType(HttpRequest::Type::GET);
- //请求访问的地址
- httpReq->setUrl("http://s.doyo.cn/img/4f/03/f5a69e9e785572004231.jpg");
- //设置请求标记
- httpReq->setTag("ip");
- //设置请求有结果的时候的回调函数
- httpReq->setResponseCallback(this,SEL_HttpResponse(&HelloWorld::responseFinished));
- //客户端发出请求
- client->send(httpReq);
- //设定请求的时限 时限到了就抛出错误 结束请求
- client->setTimeoutForConnect(0.000001);
- //释放过时的请求数据
- httpReq->release();
- void HelloWorld::responseFinished(Node* n,Object* obj)
- {
- log("get data");
- //obj:1.请求到的数据 2.当时请的标记 3.有请求本身 .....所有与请求有关信息
- HttpResponse* response = (HttpResponse*)(obj);
- if (false == response->isSucceed()) //判断请求是否失败 如失败 return
- {
- log("err close.");
- return;
- }
- HttpRequest* request = response->getHttpRequest();
- //获取当前接到的信息所使用的请求的标记
- const char* tag = request->getTag();
- std::vector<char>* info = response->getResponseData();
- std::string infoStr = "";
- //strcmp用于比较两个char* 1.如果相同 返回0 2.如果前一个比后一个小 返回-1 3.如果前一个比后一个大 返回1
- if (0 == strcmp(tag,"ip"))
- {
- infoStr = string(info->begin(),info->end());
- }
- log("info: %s",infoStr.c_str());
- /* 如果内容为文字 这里为图片
- Json* convert = Json_create(infoStr.c_str());
- Json* item = Json_getItem(convert,"origin");
- const char* itemInfo = item->valuestring;
- <span style="white-space:pre"> </span> */
- //获取不同平台的可写目录 + "设定的文件名"
- string wirtePath = FileUtils::getInstance()->getWritablePath() + "json.png";
- //通过File类的一系列函数进行对内存中的数据写入到本地存储设备
- FILE* openFile = fopen(wirtePath.c_str(),"wb+"); //打开文件 有即使用 无即创建
- //1.写入的内容 2.写入内容的单字节数 3.写入的内容的大小 4.写到哪个文件去
- fwrite(infoStr.c_str(),1,infoStr.size(),openFile);//对打开文件进行写入数据
- //写入完成之后关闭进程(文件)
- fclose(openFile);
如果Json内容为图片, 显示图片在舞台上
- //写入的文件大小
- unsigned long bffSize = 0;
- //获取指定地址的内容
- unsigned char* bff = FileUtils::getInstance()->getFileData(wirtePath.c_str(),"r",&bffSize);
- //Image是个图片类 所有Texture2D都用到
- Image* img = new Image();
- //本地的图片资源可以解析成字符数据
- img->initWithImageData(bff,bffSize);
- Texture2D* ttu2D = new Texture2D();
- ttu2D->initWithImage(img);
- Sprite* mm = Sprite::createWithTexture(ttu2D);
- addChild(mm);
- mm->setPosition(Point(100,100));
- //释放过时的内存
- img->release();
- ttu2D->release();
- //文件后缀
- span style="white-space:pre"> </span> string str = FileUtils::getInstance()->getWritablePath() + "json.png";
- std::string::size_type index = str.find_last_of(".");
- str = str.substr(index + 1);
- log("str: %s",str.c_str());
0 0
- cocos2dx 使用Json(用于游戏更新)
- cocos2dx 使用Json(用于游戏更新)
- cocos2dx 3.1.1 在线热更新 自动更新(使用AssetsManager更新游戏资源包)
- cocos2dx 3.1.1 在线热更新 自动更新(使用AssetsManager更新游戏资源包)
- cocos2dx 3.1.1 在线热更新 自动更新(使用AssetsManager更新游戏资源包)
- cocos2dx 3.1.1 在线热更新 自动更新(使用AssetsManager更新游戏资源包)
- Cocos2dx开发手机游戏工具集(持续更新)
- cocos2dx-更新-下载--使用日志
- ISerializationCallbackReceiver接口的使用(用于解析JSON文本)
- C++使用tinyxml创建和解析xml文件(本文用于cocos2dx)
- Cocos2dx游戏源码合集(BY懒骨头+持续更新+2014.02.21)
- Cocos2dx游戏源码合集(BY懒骨头+持续更新+2014.03.17)
- 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)
- 用于android cocos2dx 开发使用的若干脚本
- 在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)
- 把cocos2dx的游戏打包成dylib,实现动态更新
- 【No11】Cocos2dx游戏开发工程师[更新完毕-共享完毕]
- Cocos2dx游戏开发工程师[更新完毕-共享完毕]
- [LeetCode-155] Min Stack(设计一个 min 函数栈)
- 重新开始写博客
- 02-如何冻结拆分表格
- 百度地图,高德地图,HTML5经纬度比较
- 接口继承和多态
- cocos2dx 使用Json(用于游戏更新)
- iOS7教程系列:自定义导航转场动画以及更多
- QT总结(一)
- ArcGIS 通过 Excel 发布要素服务教程
- cocos2dx 常见的动作汇总
- MATLAB如何将多维矩阵以列数据的的方式变成一维矩阵。
- ORACLE在新服务中建立数据库
- ppt幻灯片转换成pdf格式查看
- 升级部署和修改