本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(CCClippingNode.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
裁剪节点
///cocos2d-x-3.0alpha0/cocos2dx/misc_nodes
//裁剪节点
#ifndef __MISCNODE_CCCLIPPING_NODE_H__
#define __MISCNODE_CCCLIPPING_NODE_H__
#include "base_nodes/CCNode.h"
#include "CCGL.h"
NS_CC_BEGIN
/** ClippingNode 是 Node 的子类.
使用模板裁剪绘制它包含的 (childs)
模版是另一个节点它不会被绘制
裁剪板使用模版的 alpha 部分 (使用 alphaThreshold 调整).
*/
class CC_DLL ClippingNode : public Node
{
public:
/** 不使用模板创建并初始化裁剪节点
*/
static ClippingNode* create();
/** 使用 其它节点作为它的模板 创建并初始化一个裁剪节点
模板节点将被 retained(保留).
*/
static ClippingNode* create(Node *pStencil);
/**
* @js NA
* @lua NA
*/
virtual ~ClippingNode();
/** 不使用模板创建并初始化裁剪节点
*/
virtual bool init();
/** 使用 其它节点作为它的模板 创建并初始化一个裁剪节点
模板节点将被 retained(保留), 他的 parent 将被设置为这个裁剪节点
*/
virtual bool init(Node *pStencil);
/** 这个节点将被作为模版来裁剪.
模板节点将被 retained(保留)
This default to nil.
*/
Node* getStencil() const;
void setStencil(Node *pStencil);
/** The alpha threshold(阈值).
只有模板的的 alpha 像素 优于 alphaThreshold 时内容才会被绘制.
Should be a float between 0 and 1.
This default to 1 (so alpha test is disabled).
*/
GLfloat getAlphaThreshold() const;
void setAlphaThreshold(GLfloat fAlphaThreshold);
/** Inverted(倒置). If this is set to true,
翻转后的模板,所以模板没有绘制时,内容会被绘制
This default to false.
*/
bool isInverted() const;
void setInverted(bool bInverted);
// Overrides
/**
* @js NA
* @lua NA
*/
virtual void onEnter() override;
/**
* @js NA
* @lua NA
*/
virtual void onEnterTransitionDidFinish() override;
/**
* @js NA
* @lua NA
*/
virtual void onExitTransitionDidStart() override;
/**
* @js NA
* @lua NA
*/
virtual void onExit() override;
virtual void visit() override;
private:
/**全屏绘制来清除模版 bits
*/
void drawFullScreenQuadClearStencil();
protected:
ClippingNode();
protected:
Node* _stencil;
GLfloat _alphaThreshold;
bool _inverted;
};
NS_CC_END
#endif // __MISCNODE_CCCLIPPING_NODE_H__