123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- class Timer {
- 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;
- return true;
- }
- return false;
- }
- reset() {
- this._elapsedTime = 0;
- }
- stop() {
- this._elapsedTime = 0;
- this.step = -1;
- }
- }
- export default function get_new_timer(step: number): Timer { return new Timer(step); }
|