Cocos2d-js 中的 cc.ClippingNode()

        var bgWhite = new cc.LayerColor(cc.color(255, 255, 255, 255), 1136, 640);   // 白色纯色层 打算被遮罩

        bgWhite.x = 0;

        bgWhite.y = 0;

        this.addChild(bgWhite, 0);

---------------------------------------------------------------------------------------------

        var Stencil = new cc.Sprite("photoPath");     // 一张png格式的图片,png图片有两个部分:空白非空白  非空白也就是图案内容完全不用关心 photpPath是.png图片的路径

        var clipping_layer = new cc.ClippingNode();    // 创建一个遮罩层节点 和普通的层一样会对外显示自己 显示方式比较特别,看下面
        clipping_layer.attr({    // 遮罩层节点参数
            stencil: Stencil,     // 根据 Stencil空白非空白把clipping_layer及其上的子层切割成两个部分 A 和 B
            anchorX:0,
            anchorY:0,
            alphaThreshold:0.5,
        });
        clipping_layer.setContentSize(cc.size(1136, 640));

        clipping_layer.setPosition(cc.winSize.width / 2, cc.winSize.height / 2);

        clipping_layer.setInverted(false);     // 重点:显示方式

            // true  A区域显示clipping_layer的child部分,B区域透明,显示clipping_layer下面层的

            // false A区域透明,显示clipping_layer下面层的,B区域显示clipping_layer的child部分

        var bgBlue = new cc.LayerColor(cc.color(122,209,240,255));    // 一个浅蓝纯色层

        bgBlue.setPosition(-cc.winSize.width / 2, -cc.winSize.height / 2);

        clipping_layer.addChild(bgBlue, 1);    // clipping_layer上面加上浅蓝纯色层

        this.addChild(clipping_layer, 10);    // 把clipping_layer放到想要被遮住层的上面 例如想要遮罩白色纯色层(也就是0层) 所以随便找个大于0的层放上 但是一定要放到不想被遮罩的层的上面



// 最终效果:

假如Stencil所使用的.png图片是一个中间有一个的圆饼的图片,周围空白

当clipping_layer.setInverted(true)的时候 结果 周围空白显示clipping_layer的bgBlue,圆饼部分显示clipping_layer下面的bgWhite 也就是外蓝内白

当clipping_layer.setInverted(false)的时候 结果 周围空白显示clipping_layer的bgWhite,圆饼部分显示clipping_layer下面的bgBlue 也就是外白内蓝

Stencil所使用的.png图片只负责切,是不会有任何对外显示的


// 总结:

使用遮罩至少两个层才有意义

一个被遮,一个去遮

被遮的放下面,去遮放上面

被遮的是个普通层,去遮的有一个切割图和一个背景层(不设置就是透明的也可以是多层合起来的层)和一个开关(true或false)

切割图根据png图片的空白与非空白把普通层切割成(普通层A区域与普通层B区域)

切割图根据png图片的空白与非空白把背景层切割成(背景层A区域与背景层B区域)

A区域+B区域组成一张完整图

开关true时,显示背景层A区域与普通层B区域

开关false时,显示普通层A区域与背景层B区域

一共两张图,一共4个区域,交叉组合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值