Cocos2d-x 学习笔记(5.1)

cocos2d-x 容器 简单的本地数据存取

Posted by SixTeen on May 31, 2015

Cocos2d-x 学习笔记(5.1)

标签(空格分隔): cocos2d-x 容器 简单的本地数据存取

容器

容器就是我们存放数据的容器。适当的使用容器能给我们带来很多的方便。

比较常用的容器有vector和map。这2个容器和c++stl里的容器用法基本上是一样的。

Vector

cocos2dx里的vector的模板T必须是继承自cocos2dx::Ref的指针类型

Vector的一些常用操作

//在栈上申请Vector:
cocos2d::Vector<Sprite*> container;
//在数组的最后插入一个对象指针
container.pushback(sprite);
// 在数组位置1插入一个对象指针
container.insert(1,sprite);
// 判断对象是否在容器内 返回bool值
bool isHere = container.contains(sprite);
//获取位置为1的对象指针
Sprite* pSprite = container.at(1);
//简单的遍历,使用c++11 的auto语法
for(auto sp : container)
{
//do something
}
//利用迭代器遍历,这和c++的语法是一样的
cocos2d:Vector<Sprite*>::iterator it = container.begin();
for(;it != container.end();)
{
    //(*it)->function();
}
cocos2d:Vector<Sprite*>::iterator it = container.begin();
for(;it != container.end();){
    if (sprite_1==(*it)){
        //erase()执行后会返回指向下一个元素的迭代器
        it = container.erase(it);
    }
    else{
        it++;
        //do something
    }
}

Map

cocos2dx里的Map<K,V>的模板V必须是继承自cocos2dx::Ref的指针类型

Map的一些常用操作

//在栈上申请Map:
cocos2d::Map<std::string,Sprite*> map;
//插入键值对
map.insert("monster",sprite);
//返回map中key映射的元素的值
map.at("monster");

本地数据存取

UserDefault

适合用于基础数据类型的存取,数据将以xml的文件格式存储

使用UserDefault的时候,存取的路径是在CCUserDefault.cpp中的

void UserDefault::initXMLFilePath()
{
    if (! _isFilePathInitialized)
    {
        //设定路径,这里设置为D盘根目录,保存的文件名字是Score.xml
        _filePath += "D:\Score.xml";
        _isFilePathInitialized = true;
    }
}
//检测xml文件是否存在
    if (!UserDefault::getInstance()->getBoolForKey("isExist"))
    {
        UserDefault::getInstance()->setBoolForKey("isExist", true);
    }
    //获取键值为value的数据
    int value =UserDefault::getInstance()->getIntegerForKey("value");
    //将score写入
    UserDefault::getInstance()->setIntegerForKey("value", score);
    //其他的一些获取方法
    string value=UserDefault::getInstance()->getStringForKey("str");