小游戏存档管理

小游戏存档管理

import userData from "userData";
export default {
    //合并存档
    mergeJSON(n, o) {
        let oType = Object.prototype.toString.call(o);
        let nType = Object.prototype.toString.call(n);
        if (nType == '[object Object]' && oType == '[object Object]') {
            //合并属性(object)
            for (let p in n) {
                if (n.hasOwnProperty(p) && !o.hasOwnProperty(p)) {
                    //新的有,旧的没有
                    o[p] = n[p];
                } else if (n.hasOwnProperty(p) && (o.hasOwnProperty(p))) {
                    //两者都有
                    let oPType = Object.prototype.toString.call(o[p]);
                    let nPType = Object.prototype.toString.call(n[p]);
                    if ((nPType == '[object Object]' && oPType == '[object Object]') || (nPType == '[object Array]' && oPType == '[object Array]')) {
                        this.mergeJSON(n[p], o[p]);
                    }
                };
            }
        } else if (nType == '[object Array]' && oType == '[object Array]') {
            //合并属性(array)
            for (let i in n) {
                let oIType = Object.prototype.toString.call(o[i]);
                let nIType = Object.prototype.toString.call(n[i]);
                if ((nIType == '[object Object]' && oIType == '[object Object]') || (nIType == '[object Array]' && oIType == '[object Array]')) {
                    this.mergeJSON(n[i], o[i]);
                }
            }
        };
        //合并属性(other)
        n = o;
        return n;
    },
    //刷新数据
    updateUserData: function (localUserData) {
        //合并对象,源对象合并到目标对象
        //Object.assign(target,sources)
        let now_ud = this.mergeJSON(userData, localUserData);
        Object.assign(userData, now_ud)
        cc.log(userData, "userData");
    },
    //读取本地数据
    load: function () {
        try {
            let localUserData = JSON.parse(cc.sys.localStorage.getItem('userData'));
            if (localUserData !== null) {
                this.updateUserData(localUserData);
                cc.log("使用存档");
            } else {
                this.save();
                //否则就初始化
            };
        } catch (err) {
            this.save();
            cc.log("报错处理");
            cc.log(err);
        }
    },
    //将缓存数据写入到本地中
    save: function () {
        let cacheUserData = userData;
        this.clear();
        cc.sys.localStorage.setItem('userData', JSON.stringify(cacheUserData));
        cc.log("已存档");
        // cc.log(JSON.stringify(userData));
    },
    //清除所有数据
    clear: function () {
        cc.sys.localStorage.removeItem('userData');
        // cc.log("清除本地所有数据");
    },

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值