我的生活,我的点点滴滴!!
可以根据一个模板切割图片的节点--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);
/**
这个用来设置显示的部分