cocos-js,数据本地存储

一、前言

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))
    },


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值