消除我特牛
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

83 lines
2.4 KiB

const { ccclass, property } = cc._decorator;
@ccclass
export default class DaoJiShiProgress extends cc.Component {
@property({
type: cc.Node,
displayName: "进度条上面的人物",
})
slider: cc.Node = null;
@property({
type: cc.Node,
displayName: "计时文字",
})
timer: cc.Node = null;
@property({
displayName: "总时间s",
})
allTimeNum: number = 60;
_dt: number = 0
isStartTimer: boolean = false//是否开始倒计时
curTimeNum: number = 0
progressWidth: number = 0
finishCallFunc = null //结束回调
callTarget = null //回调对象
start() {
this.progressWidth = this.node.width;
this.curTimeNum = this.allTimeNum;
this.isStartTimer = false;
this.updateProgress()
}
update(dt) {
if (this.isStartTimer) {
this.curTimeNum -= dt
this.updateProgress()
//倒计时结束
if (this.curTimeNum <= 0) {
this.curTimeNum = 0
this.isStartTimer = false
this.node.getComponent(cc.ProgressBar).progress = 0;
this.timer.getComponent(cc.Label).string = "0";
this.slider.x = 0;
this.finishCallFunc && (this.callTarget ? this.finishCallFunc.apply(this.callTarget) : this.finishCallFunc());
}
}
}
//设置开始/结束倒计时
setIsStartTimer(bStart, finishCallFunc?: { target: any, callFunc: any }) {
this.isStartTimer = bStart
if (finishCallFunc) {
this.finishCallFunc = finishCallFunc.callFunc;
this.callTarget = finishCallFunc.target;
}
}
//加时:秒
addTimer(time: number) {
this.curTimeNum += time;
this.allTimeNum += time;
let rate = this.curTimeNum / this.allTimeNum;
this.node.getComponent(cc.ProgressBar).progress = rate;
this.timer.getComponent(cc.Label).string = Math.floor(this.curTimeNum).toString();
this.slider.x = rate * this.progressWidth;
}
updateProgress() {
//未设置倒计时时间
if (this.allTimeNum <= 0) {
return;
}
let rate = this.curTimeNum / this.allTimeNum;
this.node.getComponent(cc.ProgressBar).progress = rate;
this.timer.getComponent(cc.Label).string = Math.floor(this.curTimeNum).toString();
this.slider.x = rate * this.progressWidth;
}
}