Files
oops-plugin-framework/assets/core/common/timer/Timer.ts
dgflash b552447c73 1、兼容cc3.7.0
2、重构TimerManager时间管理模块
2023-01-19 15:12:59 +08:00

70 lines
1.5 KiB
TypeScript

/*
* @Author: dgflash
* @Date: 2023-01-19 11:09:38
* @LastEditors: dgflash
* @LastEditTime: 2023-01-19 14:28:05
*/
/**
* 定时跳动组件
* @example
export class Test extends Component {
// 创建一个定时跳动组件
private timer: Timer = new Timer(1);
update(dt: number) {
if (this.timer.update(this.dt)) {
console.log(每一秒触发一次);
}
}
}
*/
export class Timer {
callback: Function | null = null;
private _elapsedTime: number = 0;
get elapsedTime(): number {
return this._elapsedTime;
}
private _step: number = -1;
/** 触发间隔时间(秒) */
get step(): number {
return this._step;
}
set step(step: number) {
this._step = step; // 每次修改时间
this._elapsedTime = 0; // 逝去时间
}
get progress(): number {
return this._elapsedTime / this._step;
}
constructor(step: number = 0) {
this.step = step;
}
update(dt: number) {
if (this.step <= 0) return false;
this._elapsedTime += dt;
if (this._elapsedTime >= this._step) {
this._elapsedTime -= this._step;
this.callback?.call(this);
return true;
}
return false;
}
reset() {
this._elapsedTime = 0;
}
stop() {
this._elapsedTime = 0;
this.step = -1;
}
}