Egret社区
30银子
本帖最后由 jishaohai 于 2019-4-28 17:06 编辑

如题:想做一个新手引导的遮罩,利用反向遮罩在模拟器上实现了,但发布到微信开发者工具发现,shape的点击事件直接被穿透了,下方的所有按钮都可以被点击,求解!

代码如下:
        public mapMask(target?: Array<number>) {
                this._isMask = true;
                let container: egret.DisplayObjectContainer = new egret.DisplayObjectContainer();
                let dp: egret.Shape = null;
                let bg: egret.Shape = new egret.Shape();
                bg.graphics.beginFill(0x000000, 0.7);
                bg.graphics.drawRect(0, 0, this.width, this.height);
                bg.graphics.endFill();
                container.addChild(bg);
                for (let i = 0; i < target.length; i++) {
                        let map = <Map>this.gameGrp.getChildAt(target);
                        let point = new egret.Point();
                        this.gameGrp.localToGlobal(map.x, map.y - 12, point);
                        dp = new egret.Shape();
                        dp.graphics.beginFill(0xff0000);
                        dp.graphics.drawRect(point.x, point.y, map.width, map.height - 12);
                        dp.graphics.endFill();
                        container.addChild(dp);
                        dp.blendMode = egret.BlendMode.ERASE;
                }
                let renderTexture: egret.RenderTexture = new egret.RenderTexture();
                renderTexture.drawToTexture(container);
                this.selectBitmap = new egret.Bitmap(renderTexture);
                this.addChild(this.selectBitmap);
                this.selectBitmap.addEventListener(egret.TouchEvent.TOUCH_TAP, this.selectBitmapCallBack, this);
                this.selectBitmap.touchEnabled = true;  //允许点击
                this.selectBitmap.pixelHitTest = true;  //镂空区域不响应点击,这样可以穿透点击到下面的背景
        }


最佳答案

查看完整内容

老哥你有设置touchenable吗,因为除了eui组件其他的显示对象的touchenable默认是false
分享到 :
2 人收藏

14 个回复

倒序浏览
asurance  略有小成 | 2019-4-28 16:38:03
老哥你有设置touchenable吗,因为除了eui组件其他的显示对象的touchenable默认是false
jishaohai  登堂入室 | 2019-4-28 16:49:33
在线等急,谢谢
wqe  初窥堂奥 | 2019-4-28 17:01:23
单独开启点击事件,需要点击谁,谁就开启点击,其余的关闭,新手完成了之后再全部开启,这样应该可以吧
jishaohai  登堂入室 | 2019-4-28 17:04:55
wqe 发表于 2019-4-28 17:01
单独开启点击事件,需要点击谁,谁就开启点击,其余的关闭,新手完成了之后再全部开启,这样应该可以吧 ...

这样的话就比较麻烦了,多个界面处理起来就比较麻烦了,不过也是一种解决方案
wqe  初窥堂奥 | 2019-4-28 17:06:08
新手引导很简单的几个点击吧
jishaohai  登堂入室 | 2019-4-28 17:06:53
wqe 发表于 2019-4-28 17:06
新手引导很简单吧

我们的引导流程比较长贯穿多个场景
wqe  初窥堂奥 | 2019-4-28 17:15:57
可以写个方法把每个页面需要点击的放到一个数组,先遍历数组全部关闭点击事件,传参进来开启需要的点击,每个需要新手引导的都写一个,每次调用,
点击穿透的话没遇到过,一般没做新手引导,最多给张图片说明一下,点击那个位置会出有什么功能
709681631  登堂入室 | 2019-4-28 21:48:47
类似楼上的说法,把哪个界面的所有功能按钮都放在一个Group里,不需要遍历,touchChildren等于false就好
jishaohai  登堂入室 | 2019-4-29 10:06:52
709681631 发表于 2019-4-28 21:48
类似楼上的说法,把哪个界面的所有功能按钮都放在一个Group里,不需要遍历,touchChildren等于false就好 ...

主要还是想研究明白为何在真机会出现反向遮罩触摸事件失效的问题,多谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部