Cocos2d-x中LocalStrorage的使用

来源:互联网 发布:淘宝店忘记账号密码 编辑:程序博客网 时间:2024/06/05 15:02

环境说明:

cocos2d-x2.2.1

vs2010
SQLite Expert Professional 3.4.34.2256 (用于查看SQLite数据库文件)点击下载

LocalStorage调用示例


MyDB.h

#ifndef _MY_DB_#define _MY_DB_#include "cocos-ext.h"#include "LocalStorage/LocalStorage.h"USING_NS_CC_EXT;class DB{public:static void init();static void free();static void insert();static void del();static void update();static void query();};#endif
MyDB.cpp
#include "MyDB.h"void DB::init(){//初始化一个数据库,会创建一张data表,数据库文件会生成在Resource目录下localStorageInit("my.db");}void DB::free(){//释放资源localStorageFree();}void DB::insert(){//插入数据到data表localStorageSetItem("a","1");localStorageSetItem("b","2");localStorageSetItem("c","3");}void DB::del(){//删除数据localStorageRemoveItem("c");}void DB::update(){//更新数据localStorageSetItem("a","2");}void DB::query(){//查询数据CCLOG("query result : %s" ,localStorageGetItem("a"));}


测试


1.创建一个Cocos2d-x的cpp工程

2.首先在HelloWorldScene.cpp中 #include "MyDB.h"

3.修改HelloWorldScene.cpp中的init方法实现(添加按钮,点击回调分别对DB执行不同的操作

bool HelloWorld::init()    if ( !CCLayer::init() )    {        return false;    }    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();CCMenuItemImage *pCloseItem = CCMenuItemImage::create(                                        "CloseNormal.png",                                        "CloseSelected.png",                                        this,                                        menu_selector(HelloWorld::menuCloseCallback));    pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,                                origin.y + pCloseItem->getContentSize().height/2));    CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);    pLabel->setPosition(ccp(origin.x + visibleSize.width/2,                            origin.y + visibleSize.height - pLabel->getContentSize().height));    this->addChild(pLabel, 1);    CCSprite* pSprite = CCSprite::create("HelloWorld.png");    pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));    this->addChild(pSprite, 0);    //创建几个按钮,回调方法分别对DB执行不同的操作//初始化CCMenuItemFont* pInitItem = CCMenuItemFont::create("Init", this, menu_selector(HelloWorld::initDb));pInitItem->setPosition(ccp(origin.x + 100, visibleSize.height - 100));//增CCMenuItemFont* pInsertItem = CCMenuItemFont::create("Insert", this, menu_selector(HelloWorld::insertDb));pInsertItem->setPosition(ccp(origin.x + 200, visibleSize.height - 100));//删CCMenuItemFont* pDelItem = CCMenuItemFont::create("Delete", this, menu_selector(HelloWorld::delDb));pDelItem->setPosition(ccp(origin.x + 100, visibleSize.height - 200));//改CCMenuItemFont* pUpdateItem = CCMenuItemFont::create("Update", this, menu_selector(HelloWorld::updateDb));pUpdateItem->setPosition(ccp(origin.x + 200, visibleSize.height - 200));//查CCMenuItemFont* pQueryItem = CCMenuItemFont::create("Query", this, menu_selector(HelloWorld::queryDb));pQueryItem->setPosition(ccp(origin.x + 100, visibleSize.height - 300));//释放资源CCMenuItemFont* pFreeItem = CCMenuItemFont::create("Free", this, menu_selector(HelloWorld::freeDb));pFreeItem->setPosition(ccp(origin.x + 200, visibleSize.height - 300));// create menu, it's an autorelease objectCCMenu* pMenu = CCMenu::create(pCloseItem, pInitItem, pInsertItem, pDelItem, pUpdateItem, pQueryItem, pFreeItem, NULL);pMenu->setPosition(CCPointZero);this->addChild(pMenu, 1);    return true;}
4.在HelloWorldScene.h中增加菜单回调的方法声明

void initDb(CCObject* psender);void freeDb(CCObject* psender);void insertDb(CCObject* psender);void delDb(CCObject* psender);void updateDb(CCObject* psender);void queryDb(CCObject* psender);
5.在HelloWorldScene.cpp中实现菜单回调

void HelloWorld::initDb(CCObject* psender){DB::init();}void HelloWorld::freeDb(CCObject* psender){DB::free();}void HelloWorld::insertDb(CCObject* psender){DB::insert();}void HelloWorld::delDb(CCObject* psender){DB::del();}void HelloWorld::updateDb(CCObject* psender){DB::update();}void HelloWorld::queryDb(CCObject* psender){DB::query();}
6.编译-运行,但是在编译时可能会遇到如下错误,原因是链接器没有找到sqlite的库



解决链接sqlite失败的问题


1.在cocos2d-x-2.2.1\external\sqlite3\libraries\win32目录下找到sqlite的动态库与静态库两个文件,把这两个文件拷贝到工程的Debug.win32目录下



2.在工程右键属性 — 配置属性 — 链接器  — 输入 — 附加依赖项 — 编辑,把sqlite3.lib添加到依赖项中


3.保存配置,重新编译工程,运行成功!



0 0