egret定时器制作时钟

作者: IrisLong | 来源:发表于2019-04-04 16:54 被阅读0次
    定时器示例,指针按照定时每次旋转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. 默然情况下,点击舞台外任一位置 -> 可以暂停定时器,点击舞台内任一位置 -> 从当前暂停位置重新播放
    效果示意图 -- 未完成版

    相关文章

      网友评论

        本文标题:egret定时器制作时钟

        本文链接:https://www.haomeiwen.com/subject/astqiqtx.html