class Flash extends els.Component { private _ontime: number; private _offtime: number; private _state: number; private _timesLeft: number; private _onOldTime: number; private _offOldTime: number; private _start: boolean = false; constructor() { super(); } tick() { var inst: els.GameObject = this.gameobject; if (!inst) return; if (!this._start) return; var dt: number = inst.dt; if (this._timesLeft <= 0 && this._start) { this._timesLeft = 0; inst.visible = true; this._start = false; return; } var currentTime: number = egret.getTimer(); if (this._state === 0) { if (currentTime - this._onOldTime >= this._ontime * 1000) { this._offOldTime = currentTime; this._state = 1; } inst.visible = true; } else if (this._state === 1) { inst.visible = false; if (currentTime - this._offOldTime >= this._offtime * 1000) { this._onOldTime = currentTime; this._state = 0; this._timesLeft--; } } } startFlash(onTime: number, offTime: number, times: number) { var inst: els.GameObject = this.gameobject; if (!inst) return; this._ontime = onTime; this._offtime = offTime; this._state = 0; this._timesLeft = times; this._timesLeft = (this._timesLeft <= 0) ? Number.MAX_VALUE : this._timesLeft; inst.visible = true; this._onOldTime = egret.getTimer(); this._offOldTime = egret.getTimer(); this._start = true; if (this._ontime < 0) this._ontime = 0; if (this._offtime < 0) this._offtime = 0; } stopFlashing() { this._start = false; this._timesLeft = 0; if (this.gameobject) this.gameobject.visible = true; } }