让前端飞Egret开放平台程序员

egret定时器制作时钟

2019-04-04  本文已影响0人  IrisLong
定时器示例,指针按照定时每次旋转6度,点击舞台,可控制是否继续旋转(为了效果更明显,定时器每次时间间隔调快了10倍)
逻辑(比较简单)
  1. 绘制一个圆
        // 绘制一个表盘(圆)
        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);
  1. 绘制一个指针
        // 绘制一个指针(线)
        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);
  1. 创建一个定时器
        // 创建一个定时器
        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}`);
    }
  1. 监听舞台 -> 指针转动开关效果(可创建一个文本用来提示)
        // 监听舞台
        this.stage.addEventListener(egret.TouchEvent.TOUCH_TAP,()=>{
            if(_timer.running){ // 计时器正在运行的时候进入
                this._txt.text = '定时器 关闭';
                _timer.stop();
            }else{
                this._txt.text = '定时器 开启';
                _timer.start();
            }
        },this);
注意几个问题
  1. 旋转的角度,默认是0~180 / -180~0
  2. 目前执行次数为 0 或者 -1 的时候,循环播放都不生效(已求助官网人员,暂时还没回复)
  3. 默然情况下,点击舞台外任一位置 -> 可以暂停定时器,点击舞台内任一位置 -> 从当前暂停位置重新播放
效果示意图 -- 未完成版
上一篇下一篇

猜你喜欢

热点阅读