实现代码:
// 背景图(不是必须的)
CCSprite *target = CCSprite::create("HelloWorld.png");
target->setAnchorPoint(CCPointZero);
target->setScale(2);
this->addChild(target);
// 裁剪节点
CCClippingNode *holesClipper = CCClippingNode::create();
holesClipper->setInverted(true);
holesClipper->setAlphaThreshold( 0.05f );
// 裁剪节点加载到背景图
target->addChild(holesClipper);
// 创建裁剪content图片,并加载到裁剪节点上
CCSprite *hole = CCSprite::create("u_600.png”); //场景图
hole->setPosition( ccp(200, 200) );
holesClipper->addChild(hole);
// 创建遮罩模板图片,并设置到裁剪节点
CCSprite *holeStencil = CCSprite::create("u2_117_38.png”); //孔图
holeStencil->setPosition( ccp(200, 200) );
holesClipper->setStencil( holeStencil);
此例子与testCpp里的弹孔穿透例子实现原理相似。需要注意2点:
1、孔图中心的圆形必须是空心的,无像素;
2、在AppController.mm中的depthFormat配置那儿设置为:depthFormat: GL_DEPTH24_STENCIL8_OES!打开深度格式缓冲区!
便可看到方形图片被裁剪出圆形的图片了!