加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

quick cocos2dx clipNode详解

发布时间:2020-12-14 17:19:25 所属栏目:百科 来源:网络整理
导读:前段时间被clipNode困扰了一会,彻底弄透以后写篇文章介绍一下 clipNode是一个可以根据模板(stencil)来显示指定内容的强大控件,它可以做出动态高亮效果。也可以做新手引导。 如下图所示 这里来介绍一下如何实现 如图所示,那个穿透的地方就是stencil。clipN

前段时间被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,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 这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读