Egret社区
10银子
用遮罩主要是为了实现游戏中的圆形进度条,可是发现显示异常,两个遮罩会相互影响,只能正常显示一个,直接贴代码
class CDTimer extends egret.DisplayObjectContainer{
                private bg:egret.Bitmap;
                private label:eui.Label;
                private count:number;
                private shape:egret.Shape;
                private radius:number;
                private angle:number;
                private timer:egret.Timer;
                private current:number;
                private step:number;
                /*
                 * count 毫秒
                 */
        public constructor(count: number,res: string) {
                    super();
                    this.init(count,res);
            this.bg.mask = this.shape;
                }
                public init(count:number,res:string):void
                {
            this.bg = new egret.Bitmap(RES.getRes(res));
            this.addChild(this.bg);
            this.bg.visible=false;

            this.label=new eui.Label();
            this.addChild(this.label);

            this.label.anchorOffsetX=this.label.width/2;
            this.label.anchorOffsetY=this.label.height/2;
            this.label.x=this.bg.width/2;
            this.label.y=this.bg.height/2;


            this.shape=new egret.Shape();

            this.addChild(this.shape);
            this.shape.x = this.bg.width / 2;
            this.shape.y = this.bg.height / 2;



            this.count=count;
            this.current=count;
            this.radius = Math.max(this.bg.width,this.bg.height)/2;
            this.angle=-90;
            this.step = 360 / (this.count*10);

            this.timer=new egret.Timer(100,count*10);
            this.timer.addEventListener(egret.TimerEvent.TIMER,this.handler,this);
            this.start()
                }

               
                public start():void
                {
                   //this.timer.start();
           this.label.text = this.count.toFixed(1).toString();
           this.bg.visible=true;
           this.timer.start();
                }
                public reset():void
                {
                    this.label.text="";
                    this.shape.graphics.clear();
                    this.timer.stop();
                    this.bg.visible=false;
                }
        public handler(e:egret.TimerEvent):void
                {
           this.current = Number((this.current - 0.1).toFixed(1));
                   if(this.current<=0)
         {
             this.reset();
             return ;
         }
               this.label.text=this.current.toString();
           this.label.anchorOffsetX = this.label.width / 2;
           this.label.anchorOffsetY = this.label.height / 2;
           this.label.x = this.bg.width / 2;
           this.label.y = this.bg.height / 2;


           this.angle+=this.step;
           this.angle=this.angle%360;

           this.shape.graphics.clear();

           this.shape.graphics.beginFill(0x00ffff,1);
           this.shape.graphics.lineTo(this.radius,0);
           this.shape.graphics.drawArc(0,0,this.radius,-90*Math.PI/180,this.angle * Math.PI / 180,false);
           this.shape.graphics.lineTo(0,0);
           this.shape.graphics.endFill();

                }
        }


下边是调用
            var timer = new game.CDTimer(23,"button_circleblack_A_png");
            this.addChild(timer);
            timer.x=300;
            timer.y=300;

            var timer1 = new game.CDTimer(8.9,"button_circleblack_B_png");
            this.addChild(timer1);
            timer1.x = 400;
            timer1.y = 300;

可是显示的结果是这样


求高手解释




bug.png
分享到 :
0 人收藏

1 个回复

倒序浏览
yjtx  官方团队 | 2016-5-20 16:58:49
麻烦把引擎、support版本都升级到3.1.0试下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部