Cocos2D-x3.x:cocostudio用户数据使用

来源:互联网 发布:淘宝上电棍叫什么 编辑:程序博客网 时间:2024/05/16 05:03

一.在编辑器设置“用户数据”,在代码中引用

在使用cocosstudio时,有很多时候需要从编辑器中传递一些自己定义的数据,cocosstudio已经为我们提供了一个非常方便的接口图如下:

1.cocosstudio中:


2.代码中引用:


二.数据解析

在上面我们已经在编辑器中设置好我们要传递的数据,如“len,2880|ybegin,0|yend,150”,并且我们在代码中取到了这个字符串,下面我们需要通过这个字符串来得到我们需要的数据:

1.添加代码

#pragma once#include "cocos2d.h"USING_NS_CC;class StringUtil : public Object {public:static StringUtil* sharedStrUtil();bool init();/** 用分隔符分割字符串,结果存放到一个列表中,列表中的对象为CCString */Array* split(const char* srcStr, const char* sSep);std::string getDateID(std::string _str, char* _id);private:static StringUtil* mStringUtil;};
#include "StringUtil.h"StringUtil* StringUtil::mStringUtil = NULL;StringUtil* StringUtil::sharedStrUtil(){if (mStringUtil == NULL) {mStringUtil = new StringUtil();if (mStringUtil && mStringUtil->init()) {mStringUtil->autorelease();}else {CC_SAFE_DELETE(mStringUtil);mStringUtil = NULL;}}return mStringUtil;}bool StringUtil::init(){return true;}Array* StringUtil::split(const char* srcStr, const char* sSep){CCArray* stringList = CCArray::create();int size = strlen(srcStr);/* 将数据转换为Cocos2d-x字符串对象 */CCString* str = CCString::create(srcStr);int startIndex = 0;int endIndex = 0;endIndex = str->_string.find(sSep);CCString* spliStr = NULL;/* 根据分隔符拆分字符串,并添加到列表中 */while (endIndex > 0) {spliStr = CCString::create("");/* 截取字符串 */spliStr->_string = str->_string.substr(startIndex, endIndex);/* 添加字符串到列表 */stringList->addObject(spliStr);/* 截取剩下的字符串 */str->_string = str->_string.substr(endIndex + 1, size);/* 查找下一个分隔符所在下标 */endIndex = str->_string.find(sSep);}/* 剩下的字符串也添加进列表 */if (str->_string.compare("") != 0) {stringList->addObject(CCString::create(str->_string));}return stringList;}std::string StringUtil::getDateID(std::string _str, char* _id){CCArray *strlist = StringUtil::sharedStrUtil()->split(_str.c_str(), "|");CCObject *object = NULL;CCARRAY_FOREACH(strlist, object){CCString *str = (CCString*)object;CCLOG(str->getCString());CCArray *strlist1 = StringUtil::sharedStrUtil()->split(str->getCString(), ",");CCObject *object1 = NULL;bool isreturn = false;CCARRAY_FOREACH(strlist1, object1){CCString *str1 = (CCString*)object1;CCLOG(str1->getCString());if (isreturn){return str1->getCString();}if (strcmp(str1->getCString(), _id) == 0){isreturn = true;}}}}

2.引用

在StringUtil::sharedStrUtil()->getDateID中传入之前获得的字符串,并且传入cocosstudio中用户数据里面缩写的关键字

三.纯c++的数据处理

static float getDateID(std::string _str,char* _id){const char* split = "|";const char* split1 = ",";char* p;char* pNext = NULL;p = strtok_s(const_cast<char*>(_str.c_str()), split, &pNext);while (p != NULL){log("p:%s", p);char* p1;char* pNext1 = NULL;p1 = strtok_s(p, split1, &pNext1);while (p1 != NULL){log("p1:%s", p1);if (strcmp(p1,_id)==0){p1 = strtok_s(NULL, split1, &pNext1);return atof(p1);}p1 = strtok_s(NULL, split1, &pNext1);}p = strtok_s(NULL, split, &pNext);}return 0;};

本文参考:Cocos2D-x游戏开发之二十四:自定义字符串分割类

0 0