原创作品,转载请标明:http://www.jb51.cc/article/p-hglfzebw-ep.html
新手引导是游戏中必备的(除了奇葩的MT用一段动画开始),也是玩家对游戏的第一印象,重要性不言而喻。一般采用的遮罩的形式来突出引导重点,同时屏蔽其他功能。这里简单的介绍一下游戏遮罩的实现,并给出一个示例。
1.CCClipingNode
CCClipingNode是一个可裁剪节点,简单理解:
(1)首先它是一个节点,继承于CCNode,所以它可以像普通节点一样放入CCLayer,CCScene,CCNode中。
(2)作为节点,它就可以用作容器,承载其他节点和精灵。我把它叫底板。
(3)如果想要对一个节点进行裁剪,那需要给出裁剪的部分,这个裁剪区域,我把它叫模版。
所以CCClipingNode裁剪节点在组成上=底板+模版,而在显示上=底板-模版。不知道这样解释会不会好理解一点。
2.API
CCClipingNode的使用还是比较简单的,至于显示底板还是模版,alpha值的设定,这些也不好说清楚,自己多试几次就知道是什么意思该怎么用了。
403_80@
//不带模版地创建一个裁剪节点
staticCCClippingNode*create();
//使用一个节点作为模版创建裁剪节点
staticCCClippingNode*create(CCNode*pStencil);
//不带模版地初始化一个裁剪节点
virtualboolinit();
//使用一个节点作为模版初始化裁剪节点
boolinit(CCNode*pStencil);
//设置/获取模版,注意模版需要retain!
CCNode*getStencil()const;
voidsetStencil(CCNode*pStencil);
//设置alpha值(0~1),这个很重要,裁剪是按像素抠图的,所以只有大于这个alpha值的模版像素才会被画出来
//默认是1,也就是完全裁剪。
GLfloatgetAlphaThreshold()const;
voidsetAlphaThreshold(GLfloatfAlphaThreshold);
//默认是false,用于设置显示底板还是模版
boolisInverted()voidsetInverted(boolbInverted);
@H_
3.示例
在init中实现: