egret定时器制作时钟
2019-04-04 本文已影响0人
IrisLong
定时器示例,指针按照定时每次旋转6度,点击舞台,可控制是否继续旋转(为了效果更明显,定时器每次时间间隔调快了10倍)
逻辑(比较简单)
- 绘制一个圆
// 绘制一个表盘(圆)
var cir: egret.Shape = new egret.Shape();
cir.graphics.beginFill(0x000000, 0);
cir.graphics.lineStyle(1, 0x000000);
cir.graphics.drawCircle(0, 0, 100);
cir.graphics.endFill();
cir.x = this.stage.stageWidth / 2;
cir.y = this.stage.stageHeight / 2;
this.addChild(cir);
- 绘制一个指针
// 绘制一个指针(线)
this._line = new egret.Shape();
this._line.graphics.beginFill(0x000000);
this._line.graphics.drawRect(0, 0, 98, 2);
this._line.graphics.endFill();
this._line.x = this.stage.stageWidth / 2;
this._line.y = this.stage.stageHeight / 2;
this.addChild(this._line);
- 创建一个定时器
// 创建一个定时器
var _timer: egret.Timer = new egret.Timer(100, 120); // 每次间隔时间 执行次数(0->重复执行)
_timer.addEventListener(egret.TimerEvent.TIMER, this.timerFunc, this);
_timer.start(); // 开始计时
// 在计时过程中触发 -> 要执行的动作
private timerFunc() {
this._line.rotation += 6;
console.log(`${this._line.rotation}`);
}
- 监听舞台 -> 指针转动开关效果(可创建一个文本用来提示)
// 监听舞台
this.stage.addEventListener(egret.TouchEvent.TOUCH_TAP,()=>{
if(_timer.running){ // 计时器正在运行的时候进入
this._txt.text = '定时器 关闭';
_timer.stop();
}else{
this._txt.text = '定时器 开启';
_timer.start();
}
},this);
注意几个问题
- 旋转的角度,默认是
0~180 / -180~0
- 目前执行次数为 0 或者 -1 的时候,循环播放都不生效(已求助官网人员,暂时还没回复)
- 默然情况下,点击舞台外任一位置 -> 可以暂停定时器,点击舞台内任一位置 -> 从当前暂停位置重新播放
- 关于egret定时器的知识点,建议参考资料