体力系统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++;
}
},
});