最近因为项目需要一个由中心向四周扩散的开牌特效,发现使用ClippingNode可以实现。
cocos2dx中ClippingNode(裁剪节点)可以用来对节点进行裁剪。ClippingNode是Node的子类,可以像普通节点一样放入Layer,Scene,Node中。主要是根据一个模板(Stencil)切割图片的节点。
主要有两个部分:模板(stencil),底板。设置方法如下:
clippingNode->setStencil(stencil); //设置模板Stencil
clippingNode->addChild(content); //设置底板
setAlphaThreshold()
此函数是用来确定模板中有哪些内容是需要绘制的。
只有模板中像素的alpha值大于所设置的alpha阈值时,内容才会被绘制。
默认为1,表示alpha测试默认关闭,即全部绘制。
若不是1,表示只绘制模板中,alpha像素大于所设置的alpha阈值(alphaThreshold)的内容。
alpha阈值(alphaThreshold):取值范围[0,1]。
setInverted()
clippingNode->setInverted(false);
//默认值为false: 表示显示被裁剪下来的底板内容。
//如果设为true: 表示显示剩余部分。
默认状态下,也就是setInverted(false)时,可以想象成将底板的内容从模板下往上拉,被模板挡住的底板内容是要显示的。