【cocos creator】体力系统2.0

体力系统2.0

在这里插入图片描述

//2.0
// Learn cc.Class:
//  - https://docs.cocos.com/creator/manual/en/scripting/class.html
// Learn Attribute:
//  - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
var curMod = cc.Class({
    extends: cc.Component,

    properties: {
        // foo: {
        //     // ATTRIBUTES:
        //     default: null,        // The default value will be used only when the component attaching
        //                           // to a node for the first time
        //     type: cc.SpriteFrame, // optional, default is typeof default
        //     serializable: true,   // optional, default is true
        // },
        // bar: {
        //     get () {
        //         return this._bar;
        //     },
        //     set (value) {
        //         this._bar = value;
        //     }
        // },
        TiliTime: cc.Label,//体力回复剩余时间
        energyLabel: cc.Label,//体力显示
        MaxEnergy: 30,//最大体力值
        EnergyReturnTime: 600,//体力回复时间
    },

    statics: {
        _instance: null,
        Instance() {
            return curMod._instance;
        },
        //体力
        GetLeaveEnergy() {
            var key = 'Leave_Energy2';
            var str = cc.sys.localStorage.getItem(key);
            if (str) {
                return parseInt(str);
            }
            return 10;
        },
        SetLeaveEnergy(i) {
            var key = 'Leave_Energy2';
            var value = i + "";
            cc.sys.localStorage.setItem(key, value);
        },

        //体力获取时间
        GetLeaveEnergyTime() {
            var key = 'Leave_EnergyTime2';
            var str = cc.sys.localStorage.getItem(key);
            if (str) {
                return parseInt(str);
            }
            return new Date().getTime();
        },
        SetLeaveEnergyTime(i) {
            var key = 'Leave_EnergyTime2';
            var value = new Date().getTime();
            cc.sys.localStorage.setItem(key, value);
        },
    },
    // LIFE-CYCLE CALLBACKS:

    onLoad() {
        curMod._instance = this;
        //this.timer = 0;
        //this.energy = this.MaxEnergy;
        //curMod.SetLeaveEnergy(this.MaxEnergy);
        //curMod.SetLeaveEnergyTime();
        this.setTili();
    },

    start() {
        this.timmer = function () {
            //cc.log(this.timeron)
            if (this.timeron) {
                this.setEnergyTime();
            }
        };
        this.schedule(this.timmer, 1);
        //测试
        /*
        this.schedule(() => {
            this.setEnergy(-5)
        }, 10);*/
    },

    onEnergyDownBtn() {
        this.setEnergy(-1);
    },

    //设置体力
    setEnergy(i) {
        if (this.energy <= 0 && i < 0) {
            return;
        }
        //cc.log(this.energy, i)
        var energy = this.energy + i;
        curMod.SetLeaveEnergy(energy);
        this.energy = energy;
        if (this.energyLabel) {
            this.energyLabel.string = this.energy;
        }
        //cc.log(this.energy, this.MaxEnergy)
        if (i < 0 && this.energy <= this.MaxEnergy) {
            //this.ReStartTimer();
        }
    },

    //体力系统
    setTili() {
        var LeaveEnergy = curMod.GetLeaveEnergy();
        this.energy = LeaveEnergy;
        var lastTime = new Date(curMod.GetLeaveEnergyTime()).getTime();
        let nowTime = new Date().getTime();
        var tiliCount = parseInt((nowTime - lastTime) / 1000 / this.EnergyReturnTime);

        this.EnergyTime = this.EnergyReturnTime - parseInt((nowTime - lastTime) / 1000 % this.EnergyReturnTime);
        this.setEnergyTime();
        this.timeron = true;

        if (tiliCount < 0 || LeaveEnergy < 0) {
            tiliCount = 0;
            curMod.SetLeaveEnergyTime();
            curMod.SetLeaveEnergy(0);
            this.energy = 0;
        }
        if (LeaveEnergy > this.MaxEnergy) {
            this.timeron = false;
            this.TiliTime.string = "已满";
            /*
            if (User.userInfo.needReset) {
                this.energy = this.MaxEnergy;
                curMod.SetLeaveEnergy(this.MaxEnergy);
                curMod.SetLeaveEnergyTime();
            }*/
        }
        else if ((tiliCount + LeaveEnergy) >= this.MaxEnergy) {
            this.timeron = false;
            this.TiliTime.string = "已满";
            this.energy = this.MaxEnergy;
            curMod.SetLeaveEnergyTime();
            curMod.SetLeaveEnergy(this.energy);
        }
        else if (tiliCount > 0) {
            this.TiliTime.node.active = true;
            this.energy = tiliCount + LeaveEnergy;
            // curMod.SetLeaveEnergy(this.energy);
        }
        if (this.energyLabel) {
            this.energyLabel.string = this.energy;
        }
    },

    ReStartTimer() {
        this.EnergyTime = this.EnergyReturnTime;
        curMod.SetLeaveEnergy(this.energy);
        curMod.SetLeaveEnergyTime();
        this.timeron = true;
    },

    setEnergyTime() {
        //cc.log(this.energy);
        if (this.energy < 0) {
            this.energy = 0;
            this.energyLabel.string = this.energy;
        }
        if (this.EnergyTime > 0) {
            this.EnergyTime--;
            this.TiliTime.node.active = true;
            if (this.TiliTime) {
                if (parseInt(this.EnergyTime % 60) < 10) {
                    this.TiliTime.string = parseInt(this.EnergyTime / 60) + ":0" + parseInt(this.EnergyTime % 60);
                }
                else {
                    this.TiliTime.string = parseInt(this.EnergyTime / 60) + ":" + parseInt(this.EnergyTime % 60);
                }
            }
        }
        else {
            if (this.energy < this.MaxEnergy) {
                this.energy++;
                this.ReStartTimer();
            }
            else {
                this.timeron = false;
                this.TiliTime.string = "已满";
            }
        }
        if (this.energyLabel) {
            this.energyLabel.string = this.energy;
        }
        if (this.energy >= this.MaxEnergy) {
            this.timeron = false;
            this.TiliTime.string = "已满";
        }
    },
    update(dt) {
        /*
        if (this.timer >= 60) {
            if (this.timeron) {
                this.setEnergyTime();
            }
            this.timer = 0;
        }
        else {
            this.timer++;
        }*/
    },
});

体力系统1.0

在这里插入图片描述

//1.0
// Learn cc.Class:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/class.html
//  - [English] http://docs.cocos2d-x.org/creator/manual/en/scripting/class.html
// Learn Attribute:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html
//  - [English] http://docs.cocos2d-x.org/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
//  - [English] https://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html

var curMod = cc.Class({
    extends: cc.Component,

    properties: {
        // foo: {
        //     // ATTRIBUTES:
        //     default: null,        // The default value will be used only when the component attaching
        //                           // to a node for the first time
        //     type: cc.SpriteFrame, // optional, default is typeof default
        //     serializable: true,   // optional, default is true
        // },
        // bar: {
        //     get () {
        //         return this._bar;
        //     },
        //     set (value) {
        //         this._bar = value;
        //     }
        // },
        TiliTime: cc.Label,//体力回复剩余时间
        energyLabel: cc.Label,//体力显示
        MaxEnergy: 30,//最大体力值
        EnergyReturnTime: 600,//体力回复时间
    },

    statics: {
        _instance: null,
        Instance() {
            return curMod._instance;
        },
        //体力
        GetLeaveEnergy() {
            var key = 'Leave_EnergyNumber2';
            var str = cc.sys.localStorage.getItem(key);
            if (str) {
                return parseInt(str);
            }
            return 10;
        },
        SetLeaveEnergy(i) {
            var key = 'Leave_EnergyNumber2';
            var value = i + "";
            cc.sys.localStorage.setItem(key, value);
        },
        //体力获取时间
        GetLeaveEnergyTime() {
            var key = 'Leave_EnergyTimes1';
            var str = cc.sys.localStorage.getItem(key);
            if (str) {
                return parseInt(str);
            }
            return 600;
        },
        SetLeaveEnergyTime(i) {
            var key = 'Leave_EnergyTimes1';
            var value = i + "";
            cc.sys.localStorage.setItem(key, value);
        },
        CheckLoginDate(lastTime) {
            var lastTime = new Date(lastTime);
            var now = new Date();
            if (now.getFullYear() !== lastTime.getFullYear() ||
                now.getMonth() !== lastTime.getMonth() ||
                now.getDate() !== lastTime.getDate()) {
                this.needReset = true;
                return true;
            }
            cc.log("不需要重置", lastTime.toDateString(), now.toDateString())
            return false;
        },
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad() {
        curMod._instance = this;
        this.timer = 0;
    },

    start() {
    },

    onEnergyDownBtn() {
        this.setEnergy(-1);
    },

    setEnergy(i) {
        this.energy += i;
        curMod.SetLeaveEnergy(this.energy);
        if (this.energyLabel) {
            this.energyLabel.string = this.energy + "/" + this.MaxEnergy;
        }
    },

    //体力系统
    setTili() {
        this.energy = curMod.GetLeaveEnergy();
        //cc.log(this.energy);
        var LeaveEnergy = curMod.GetLeaveEnergy();
        var lastTime = parseInt(cc.sys.localStorage.getItem('LastGetTime1'));
        if (!lastTime) {
            lastTime = 0;
        }
        let nowTime = new Date().getTime();
        //var tiliCount = parseInt((nowTime - lastTime) / 1000 / this.EnergyReturnTime);
        var tiliCount = parseInt((nowTime - lastTime) / 1000 / this.EnergyReturnTime);
        //cc.log(nowTime, lastTime);
        var EnergyTime = this.EnergyReturnTime - parseInt((nowTime - lastTime) / 1000 % this.EnergyReturnTime)
        //cc.log(EnergyTime)
        curMod.SetLeaveEnergyTime(EnergyTime);
        this.TiliTime.node.active = true;
        if (this.TiliTime) {
            if (parseInt(EnergyTime % 60) < 10) {
                this.TiliTime.string = parseInt(EnergyTime / 60) + ":0" + parseInt(EnergyTime % 60);
            }
            else {
                this.TiliTime.string = parseInt(EnergyTime / 60) + ":" + parseInt(EnergyTime % 60);
            }
        }
        //cc.log(EnergyTime, this.EnergyReturnTime)

        //cc.log("tiliCount***  ", (parseInt(nowTime - lastTime) / 1000), tiliCount, EnergyTime);
        if (tiliCount < 0) {
            tiliCount = 0;
        }
        if (this.energy > this.MaxEnergy) {
            this.TiliTime.node.active = false;
            let lastDate = curMod.GetLeaveEnergyTime();
            if (curMod.CheckLoginDate(lastDate)) {
                this.energy = this.MaxEnergy;
                curMod.SetLeaveEnergy(this.MaxEnergy);
            }
        }
        else if ((tiliCount + LeaveEnergy) >= this.MaxEnergy) {
            this.TiliTime.node.active = false;
            this.energy = this.MaxEnergy;
            cc.sys.localStorage.setItem('LastGetTime1', nowTime);
            curMod.SetLeaveEnergy(this.energy);
        }
        else if (tiliCount > 0) {
            this.TiliTime.node.active = true;
            this.energy = tiliCount + LeaveEnergy;
            cc.sys.localStorage.setItem('LastGetTime1', nowTime);
            curMod.SetLeaveEnergy(this.energy);
        }
        if (this.energyLabel) {
            this.energyLabel.string = this.energy + "/" + this.MaxEnergy;
        }
    },

    update(dt) {
        if (this.timer >= 50) {
            this.setTili();
            this.timer = 0;
        }
        else {
            this.timer++;
        }

    },
});

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧仙草奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值