本文来自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__


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐