用户的信息以XML文件方式保存,用CCUserDefault、CCFileUtils等类来管理。

#define COCOS2D_DEBUG 1  
#include "UserDefaultTest.h"  
#include "stdio.h"  
#include "stdlib.h"  
//层的构造函数。  
UserDefaultTest::UserDefaultTest()  
{  
    //取得屏幕大小,创建文字标签提示。  
    CCSize s = CCDirector::sharedDirector()->getWinSize();  
CCLabelTTF* label = CCLabelTTF::create("CCUserDefault test see log", "Arial", 28);  
//将标签放到当前层中并置于屏幕中央。  
    addChild(label, 0);  
    label->setPosition( ccp(s.width/2, s.height-50) );  
    //调用测试函数。  
    doTest();  
}  
  
void UserDefaultTest::doTest()  
{  
    //开始打印日志。  
    CCLOG("********************** init value ***********************");  
  
    // 创建CCUserDefault单例并创建相应的数据类型键,设置其键值。  
  
    CCUserDefault::sharedUserDefault()->setStringForKey("string", "value1");  
    CCUserDefault::sharedUserDefault()->setIntegerForKey("integer", 10);  
    CCUserDefault::sharedUserDefault()->setFloatForKey("float", 2.3f);  
    CCUserDefault::sharedUserDefault()->setDoubleForKey("double", 2.4);  
    CCUserDefault::sharedUserDefault()->setBoolForKey("bool", true);  
  
    // 设置完后,打印各类型键取出的值。  
    string ret = CCUserDefault::sharedUserDefault()->getStringForKey("string");  
    CCLOG("string is %s", ret.c_str());  
  
    double d = CCUserDefault::sharedUserDefault()->getDoubleForKey("double");  
    CCLOG("double is %f", d);  
  
    int i = CCUserDefault::sharedUserDefault()->getIntegerForKey("integer");  
    CCLOG("integer is %d", i);  
  
    float f = CCUserDefault::sharedUserDefault()->getFloatForKey("float");  
    CCLOG("float is %f", f);  
  
    bool b = CCUserDefault::sharedUserDefault()->getBoolForKey("bool");  
    if (b)  
    {  
        CCLOG("bool is true");  
    }  
    else  
    {  
        CCLOG("bool is false");  
    }  
      
    //CCUserDefault::sharedUserDefault()->flush();  
    CCLOG("********************** after change value ***********************");  
  
    // 改变相应键的键值。  
  
    CCUserDefault::sharedUserDefault()->setStringForKey("string", "value2");  
    CCUserDefault::sharedUserDefault()->setIntegerForKey("integer", 11);  
    CCUserDefault::sharedUserDefault()->setFloatForKey("float", 2.5f);  
    CCUserDefault::sharedUserDefault()->setDoubleForKey("double", 2.6);  
    CCUserDefault::sharedUserDefault()->setBoolForKey("bool", false);  
  
    //将XML数据保存到相应文件中。  
    CCUserDefault::sharedUserDefault()->flush();  
  
    // 再次打印各键值。  
  
    ret = CCUserDefault::sharedUserDefault()->getStringForKey("string");  
    CCLOG("string is %s", ret.c_str());  
  
    d = CCUserDefault::sharedUserDefault()->getDoubleForKey("double");  
    CCLOG("double is %f", d);  
  
    i = CCUserDefault::sharedUserDefault()->getIntegerForKey("integer");  
    CCLOG("integer is %d", i);  
  
    f = CCUserDefault::sharedUserDefault()->getFloatForKey("float");  
    CCLOG("float is %f", f);  
  
    b = CCUserDefault::sharedUserDefault()->getBoolForKey("bool");  
    if (b)  
    {  
        CCLOG("bool is true");  
    }  
    else  
    {  
        CCLOG("bool is false");  
    }  
}  
  
//析构  
UserDefaultTest::~UserDefaultTest()  
{  
}  
//场景启动时调用。  
void UserDefaultTestScene::runThisTest()  
{  
    //创建一个演示用的层并放到当前演示场景中。  
    CCLayer* pLayer = new UserDefaultTest();  
    addChild(pLayer);  
    //启动当前场景。  
    CCDirector::sharedDirector()->replaceScene(this);  
    pLayer->release();  
}  

参考文档



blog comments powered by Disqus

Published

17 November 2014

Tags