quick cocos2dx clipNode详解

前段时间被clipNode困扰了一会,彻底弄透以后写篇文章介绍一下
clipNode是一个可以根据模板(stencil)来显示指定内容的强大控件,它可以做出动态高亮效果。也可以做新手引导。
如下图所示
这里写图片描述
这里来介绍一下如何实现
如图所示,那个穿透的地方就是stencil。clipNode在于它支持是否显示模板。
像新手引导这个例子就是不显示模板的。那么它就是透的。
clipNode首先是一个node,那么它就有children,这些children的层级是先加的在下,后加的在上。而这个stencil是比较特殊的child,它只允许设置一个
clipNode:setStencil()
添加了stenceil以后,就可以对它的显示进行控制了
clipNode:setInverted()
这个是用来设置是显否显示stenceil的,若是false,则只显示stencil的内容,其他内容看不到。若为true,则显示的是除了stenceil以外的内容
这里写图片描述
图是盗的别人的,它所做的就是只显示stencil。而上面那个图相反,不显示stencil。
setInverted(true) 不显示stencil
setInverted(false) 只显示stencil
这么记有点绕,可以记为true时显示非stencil的内容,反之显示stenceil。
以下是伪代码
第一种

// 新手引导
local maskLayer = display.newColorLayer(cc.c4b(0, 0, 0, 120))  // 遮罩
local clipNode = cc.ClippingNode:create()
clipNode:addTo(self)
clipNode:setInverted(true)
local sprite = display.newSprite('a.png')         // 透出来的框
clipNode:setStencil(sprite)
clipNode:addChild(maskLayer)
clipNode:setAlphaThreshold(0)

第二种

// 字幕显示
local title= display.newSprite('title.png') // 下面的文字
local clipNode = cc.ClippingNode:create()
clipNode:addTo(self)
clipNode:setInverted(false)
local sprite = display.newSprite('a.png') //遮罩
clipNode:setStencil(title)
clipNode:addChild(sprite)
clipNode:setAlphaThreshold(0)

不同之处就是设置了显示哪一部分

https://www.processon.com/i/568c6ea4e4b0e51d149a085f
这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值