cocos2d-x中使用json

前端之家收集整理的这篇文章主要介绍了cocos2d-x中使用json前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

首先去下载JsonCpp这个库,放到项目的Class目录下,再在项目中添加进来。

然后、、、然后看图。。。

//JsonTestLayer.h

#pragma once

#include "json/json.h"
#include "cocos2d.h"

USING_NS_CC;

class JsonTestLayer : public CCLayer
{
public:
	CREATE_FUNC(JsonTestLayer);
	bool init();

protected:

};

  

//JsonTestLayer.cpp

#include "JsonTestLayer.h"
#include <string>
#include <iostream>
using namespace std;

#define jsonFilePath "file/json_test.txt"

#define LABEL_FONT_SIZE 28
#define LABEL_FONT_NAME "Arial"

enum TAG
{
	 Tag_Label_Direction,Tag_Label_Format,Tag_Label_Id,Tag_Label_Name,Tag_Label_Sex,Tag_Label_Love,Tag_Label_Chat
};

bool JsonTestLayer::init()
{
	bool bRet = false;

	do 
	{
		CC_BREAK_IF( !CCLayer::init() );
		CCSize winSize = CCDirector::sharedDirector()->getWinSize();

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Json test
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//read file
		unsigned long dataSize;
		unsigned char * pData;
		pData = CCFileUtils::sharedFileUtils()->getFileData(jsonFilePath,"r",&dataSize);
		if( pData==NULL || dataSize==0 )
		{
			CCLog("JsonTestLayer --> getdata json_test file error!");
			break;
		}
		//解析
		Json::Reader reader;
		Json::Value  root;
		if ( !reader.parse(string(pData,pData+dataSize),root) )
		{
			CCLog("ERROR: JsonTestLayer --> parse json_test file error!");
			break;
		}

		// 1. direction
		string strDirection = root["direction"].asString();
		CCLabelTTF* labelDirection = CCLabelTTF::create(strDirection.c_str(),LABEL_FONT_NAME,LABEL_FONT_SIZE,CCSize(winSize.width-60,0),kCCTextAlignmentLeft);
		addChild(labelDirection,1,Tag_Label_Direction);
		labelDirection->setAnchorPoint(ccp(0.5,1));
		labelDirection->setPosition(ccp(winSize.width/2,winSize.height-20));
		// 2. format
		string strFormat = root["format"].asString();
		CCLabelTTF* LabelFormat = CCLabelTTF::create(strFormat.c_str(),kCCTextAlignmentLeft);
		addChild(LabelFormat,Tag_Label_Format);
		LabelFormat->setAnchorPoint(ccp(0.5,1));
		LabelFormat->setPosition(ccp(winSize.width/2,labelDirection->getPositionY()-labelDirection->getContentSize().height-50));

		// 3. strings array
		Json::Value oneObj;
		Json::Value strArr = root["strings"];
		if( strArr.size() != 5)
		{
			CCLog("ERROR: JsonTestLayer --> json file size is [%d]",strArr.size());
			break;
		}
//		for(Json::Value::iterator it= strArr.begin(); it!=strArr.end(); ++it)

		// array 1 -> id (int)
		oneObj = strArr[(Json::Value::UInt)0];
		int id = oneObj["id"].asInt();
		// array 2 -> name (string)
		oneObj = strArr[1];
		string name = oneObj["name"].asString();
		// array 3 -> sex (bool)
		oneObj = strArr[2];
		bool sex = oneObj["sex"].asBool();
		// array 4 -> love (null)
		oneObj = strArr[3];
		int love1 = oneObj["love"].asInt();
		string love2 = oneObj["love"].asString();////////
		// array 5 -> chat
		oneObj = strArr[4];
		string chat = oneObj["chat"].asString();


		char buf[20] = "";
		//
		sprintf(buf,"%d",id);
		CCLabelTTF* labelId = CCLabelTTF::create(buf,LABEL_FONT_SIZE);
		addChild(labelId,Tag_Label_Id);
		labelId->setPosition(ccp(winSize.width/2,winSize.height/2 - 50));
		//
		CCLabelTTF* labelName = CCLabelTTF::create(name.c_str(),LABEL_FONT_SIZE);
		addChild(labelName,Tag_Label_Name);
		labelName->setPosition(ccp(winSize.width/2,winSize.height/2-100));
		//
		if(sex) strcpy(buf,"male");
		else    strcpy(buf,"female");
		CCLabelTTF* labelSex = CCLabelTTF::create(buf,LABEL_FONT_SIZE);
		addChild(labelSex,Tag_Label_Sex);
		labelSex->setPosition(ccp(winSize.width/2,winSize.height/2-150));
		//
		//
		CCLabelTTF* labelChat = CCLabelTTF::create(chat.c_str(),kCCTextAlignmentLeft);
		addChild(labelChat,Tag_Label_Chat);
		labelChat->setPosition(ccp(winSize.width/2,winSize.height/2-200-labelChat->getContentSize().height/2));


		bRet = true;

	} while (0);

	return bRet;
}

  

//json解析的文件。。

exe

——————————此人很懒、、、

原文链接:https://www.f2er.com/cocos2dx/343206.html

猜你在找的Cocos2d-x相关文章