| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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 coundown():number{
- return this._step-this._elapsedTime;
- }
- get progress(): number {
- return this._elapsedTime / this._step;
- }
- constructor(step: number = 0) {
- this.step = step;
- }
- /**
- * 序列化(数据库存储)
- */
- public serialize(): any {
- let data = {
- "step": this._step,
- "elapsed":this._elapsedTime,
- };
- return data;
- }
- /**
- * 反序列化
- */
- public unserialize(data: any): void {
- if(!data)return;
- this._step = data.step;
- this._elapsedTime = data.elapsed;
- }
- update(dt: number):boolean {
- 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;
- }
- }
|