Egret社区

[Egret Engine] webgl模式下遮罩问题

2019-1-17 18:20
4412
产品 Egret Wing 版本 5.2.12
复现概率 100% 平台 Windows win10
复现步骤 a.mask = b;
只要a有旋转动作,遮罩就无效,(b 完全透明,a无遮效果)
问题描述 a.mask = b;
无论是a的rotation是静止还是动态,遮罩都无效
只要a有旋转动作,遮罩就无效,(b 完全透明,a无遮效果)
错误代码 a.mask = b;
BUG截图
麻烦官方老师看下,看能不能修复这问题,急急急急!
分享到 :
0 人收藏

2 个回复

倒序浏览
山猫  官方团队 | 2019-1-18 10:34:51
你好,我给a添加了旋转,遮罩还生效,不知道你是怎么写的

var square:egret.Shape = new egret.Shape();
    square.graphics.beginFill(0xff0000);
    square.graphics.drawRect(0,0,100,100);
    square.graphics.endFill();
    this.addChild(square);
    square.rotation=40;

    //画一个蓝色的圆形
    var circle:egret.Shape = new egret.Shape();
    circle.graphics.beginFill(0x0000ff);
    circle.graphics.drawCircle(25,25,25);
    circle.graphics.endFill();
    this.addChild(circle);

    square.mask = circle;
alex188  登堂入室 | 2019-1-18 12:52:55
山猫 发表于 2019-1-18 10:34
你好,我给a添加了旋转,遮罩还生效,不知道你是怎么写的

var square:egret.Shape = new egret.Shape();

private addStage(e:egret.Event):void{
                if(this.Point <= 0){return;}
                this.airplanebg = new eui.Image();
                this.airplanebg.source = "airplane_BG_png";
                this.airplanebg.width = 394;
                this.airplanebg.height = 600;
                this.airplanebg.x = 0;
                this.airplanebg.y = 0;
                this.addChild(this.airplanebg);
                this.addEventListener(egret.TouchEvent.TOUCH_BEGIN,this.touchStart,this);
                this.addEventListener(egret.TouchEvent.TOUCH_MOVE,this.touchMove,this);
                this.addEventListener(egret.TouchEvent.TOUCH_END,this.touchEnd,this);       

                this.maskerBGRect = new eui.Image();
                this.maskerBGRect.source = "maskpic_png";
                this.maskerBGRect.width = 840;
                this.maskerBGRect.height = 840;
                this.maskerBGRect.x = -this.maskerBGRect.width;
                this.maskerBGRect.y = -this.maskerBGRect.height;
                this.addChild(this.maskerBGRect);
                this.maskerBGRect.visible = false;
                this.maskerBGRect.touchEnabled = false;

                this.airplane = new MakeAirplane(this.Point);
                this.airplane.width = 394;
                this.airplane.height = 600;
                this.airplane.x = -this.airplane.width;
                this.airplane.y = -this.airplane.height;
                this.airplane.visible = false;
                this.addChild(this.airplane);

                this.maskerAirplaneRect = new eui.Image();
                this.maskerAirplaneRect.source = "maskpic_png";
                this.maskerAirplaneRect.width = 840;
                this.maskerAirplaneRect.height = 840;
                this.maskerAirplaneRect.x = -this.maskerAirplaneRect.width;
                this.maskerAirplaneRect.y = -this.maskerAirplaneRect.width;
                this.addChild(this.maskerAirplaneRect);
                this.maskerAirplaneRect.touchEnabled = false;
                this.maskerAirplaneRect.visible = false;
        }
        private touchStart(e:egret.TouchEvent):void{
                this.airplaneObjs = this.getStartPostion(e.localX,e.localY);// 设定飞机位置与飞机旋转角度
                if(this.airplaneObjs.postion == ""){return;}
                this.airplane.mask = null;
                this.airplanebg.mask = null;
                this.airplane.visible = true;
                this.maskerBGRect.visible = true;
                this.maskerAirplaneRect.visible = true;
                this.airplane.mask = this.maskerAirplaneRect;
                this.airplanebg.mask = this.maskerBGRect;
        }
        private touchMove(e:egret.TouchEvent):void{
                //let xx = (e.localX-this.airplane.x);
                //let yy = (e.localY-this.airplane.y);
                //拖动飞机与遮罩
                this.airplane.x = e.localX;
                this.airplane.y = e.localy;
                .............
        }

以上是项目示例代码,在5.1.xxx 以上版本遮罩都无效果
回滚到5.0.15版本就没有这问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部