Egret 使用反向遮罩做新手引导功能

新手引导最复杂的部分就是要将部分东西显示出来,其他部分遮挡,在cocos2d-x中使用多个圆,半圆,方块等组件拼出要显示的部分,egret中有一个很方便的功能能实现这个效果。

1、新建egret工程,运行,显示如下:
在这里插入图片描述
我们将上面显示白鹭时代那个遮罩显示出来,其他部分遮挡起来。

2、在createGameScene() 函数下方添加如下代码,


	/**
     * 创建场景界面
     * Create scene interface
     */
    protected createGameScene(): void {
    	***
    	this.testFunc(topMask, 0x000000, 0.8);
	}
	/**
	* 这里是反向遮挡函数
	*/
	private testFunc(target: egret.DisplayObject, bgColor: number, alpha: number) {
        let container: egret.DisplayObjectContainer = new egret.DisplayObjectContainer();

        let blendShape = new egret.Shape();					 	// 用来作为遮挡背景
        blendShape.graphics.beginFill(bgColor, alpha);
        blendShape.graphics.drawRect(0, 0, this.width, this.height);
        blendShape.graphics.endFill();
        container.addChild(blendShape);
        container.addChild(target);
        target.blendMode = egret.BlendMode.ERASE;

        let renderTexture:egret.RenderTexture = new egret.RenderTexture();
        renderTexture.drawToTexture(container);
        let blendBitmap = new egret.Bitmap(renderTexture);
        this.addChild(blendBitmap);

        blendBitmap.touchEnabled = true;  // 允许点击
        blendBitmap.pixelHitTest = true;  // 是否开启精确像素碰撞。设置为true显示对象本身的透明区域将能够被穿透。
    }

最后效果如下:
在这里插入图片描述

说明: 上面主要思路是,将背景和需要反向遮挡的添加到一个容器中,并将反向遮挡的blendMode设置为

		/**
         * 根据显示对象的 Alpha 值擦除背景。Alpha 值不为0的区域将被擦除。
         * @version Egret 2.4
         * @platform Web,Native
         * @language zh_CN
         */
        static ERASE: string;

并将其绘制为一个纹理,拿到Texture实例的bitmap对象,就是最后的显示结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值