cocos2dx-3.2(35) ClippingNode 遮罩

我的生活,我的点点滴滴!!


可以根据一个模板切割图片的节点--ClippingNode。这个类提供了一种不规则切割图片的方式,在这种方式以前,我们可以使用纹理类

自带的setTextureRect函数来切割矩形区域,而新特性中提供的ClippingNode最大的不同之处就是裁减将不仅仅局限于矩形,可以根据

任何形状进行裁减,而你要做的只是给一个“裁减模板”,首先来看这个类的常用函数(需要说明的是,这里介绍的函数只是这个类独

有的,这个类继承自Node节点类,因此节点类有的函数也就不做介绍了)


下面来看看源码及其API:


/**
ClippingNode 是一个Node的子类,他使用"裁减模板"stencil(漏字模板,我喜欢这样理解)

去遮挡他的内容(childs)。"裁减模板"stencil也是一个node结点,不会被draw。

怎么产生效果了?裁剪是通过设置"裁减模板"stencil的alpha值来镂空其中的一些区域。

作为节点,它就可以用作容器,承载其他节点和精灵。我把它叫底板。

如果想要对一个节点进行裁剪,那需要给出裁剪的部分,这个裁剪区域,我把它叫模版。

CCClipingNode裁剪节点在组成上=底板+模版,而在显示上=底板-模版。

**/

class CC_DLL ClippingNode : public Node
{
public:
	//创建一个没有stencil的裁剪node
    static ClippingNode* create();
    
	//创建一个带有stencil的裁剪node,并且些stencil会被自动retain
    static ClippingNode* create(Node *stencil);

    /** The Node to use as a stencil to do the clipping.
     The stencil node will be retained.
     This default to nil.
     */
    Node* getStencil() const;
    void setStencil(Node *stencil);
    
	//底板内容被裁剪只有设置alpha的值小于stencil模板的值,那么stencil区域就会裁剪掉,
	//所以如果我们设置clipper的alpha小于1,去裁剪底板。
    GLfloat getAlphaThreshold() const;
    void setAlphaThreshold(GLfloat alphaThreshold);
    
	/**
		这个用来设置显示的部分
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值