cocos-js,数据本地存储
2016-06-22 15:17
453 查看
一、前言
在cocos-js 3.0以上的版本中,当我们用到本地存储的时候,发现以前用到的UserDefault在JS中并没有导出,而是换成了LocalStorage。二、基本使用
/** Initializes the database. If path is null, it will create an in-memory DB. */ void CC_DLL localStorageInit( const std::string& fullpath = ""); /** Frees the allocated resources. */ void CC_DLL localStorageFree(); /** Sets an item in the JS. */ void CC_DLL localStorageSetItem( const std::string& key, const std::string& value); /** Gets an item from the JS. */ bool CC_DLL localStorageGetItem( const std::string& key, std::string *outItem ); /** Removes an item from the JS. */ void CC_DLL localStorageRemoveItem( const std::string& key ); /** Removes all items from the JS. */ void CC_DLL localStorageClear();
在
LocalStorage.h文件中我们查看了一下源码,使用方法就是设置Key-Value的方式
存储数据:cc.sys.localStorage.setItem(“key”,”value”)
获取数据:cc.sys.localStorage.getItem(“key”)
移除数据:cc.sys.localStorage.removeItem(“key”)
清除所有:cc.sys.localStorage.clear()
三、重点注意
void localStorageSetItem( const std::string& key, const std::string& value) { assert( _initialized ); int ok = sqlite3_bind_text(_stmt_update, 1, key.c_str(), -1, SQLITE_TRANSIENT); ok |= sqlite3_bind_text(_stmt_update, 2, value.c_str(), -1, SQLITE_TRANSIENT); ok |= sqlite3_step(_stmt_update); ok |= sqlite3_reset(_stmt_update); if( ok != SQLITE_OK && ok != SQLITE_DONE) printf("Error in localStorage.setItem()\n"); }
在setItem的实现方法中,我们可以看到是使用了sqlite3数据库的方法实现本地存储。
并且,我们只能保存字符串数据,所以如果要保存其他类型的数据的时候,要记得进行数据转换。
四、模仿UserDefault实现数据封装
var LocalKeyConst = { IS_SHIP_SKIP : "IS_SHIP_SKIP", //战舰自动跳过动画 } var LocalManager = { setBool:function(_key,_value){ cc.sys.localStorage.setItem(_key,_value.toString()) }, getBool:function(_key){ return cc.sys.localStorage.getItem(_key) == "false" ? false : true }, setInt:function(_key,_value){ cc.sys.localStorage.setItem(_key,_value.toString()) }, getInt:function(_key){ return Number(cc.sys.localStorage.getItem(_key)) }, setString:function(_key,_value){ cc.sys.localStorage.setItem(_key,_value) }, getString:function(_key){ return cc.sys.localStorage.getItem(_key) }, setObject:function(_key,_value){ cc.sys.localStorage.setItem(_key,JSON.stringify(_value)) }, getObject:function(_key){ return JSON.parse(cc.sys.localStorage.getItem(_key)) }, }
相关文章推荐
- Cocos2d-x利用xxtea进行图片资源加密
- cocos场景管理器-自己用
- cocos 本周学习api
- 【Cocos2d-x 3.0 中文基础教程】精灵帧缓存
- cocos2dx-lua sprite增加touch监听
- Cocos2d-x手游开发将log记录到文件
- cocos 获得2个点形成的线段的角度
- cocos-圆周运动 物理方法
- cocos-内存管理之sprite材质
- cocos-九宫格数据切割
- Cocos2d-x中CCSprite的Create流程--h
- cocos2dx CCUserDefault
- Cocos2d-JS 相关文章
- cocos2dx JNI DETECTED ERROR IN APPLICATION: illegal class name 'XXX'的错误修复
- cocos2dx常见的46中+22中动作详解
- 从cocos2dx源代码看android和iOS跨平台那些事
- 关于 error C2039: “create”: 不是“cocos2d::GLView”的成员的解决方法
- cocos listview 删除的3种方案
- Cocos开发VR菜鸟宝典 第六讲:操控设备的接入
- cocos阻挡层