sprite에 mask 설정하기 ( CCClippingNode )
//마스크를 씌우고자 하는 객체 생성
m_BonusCloud = CCSprite::create("bonus_game_cloud.png"));
// 마스크 영역으로 사용할 객체 생성
CCSprite* cloudMask = CCSprite::create("bonus_game_bg.png"));
cloudMask->setPosition( m_BonusCloud->getPosition());
// 마스크 처리를 해주는 객체 생성
CCClippingNode* maskClipper = CCClippingNode::create();
maskClipper->setInverted(false); // true면 마스크영역만 객체가 안보이게, false면 마스크영역에만 객체가 보이게
maskClipper->setAlphaThreshold(0);
maskClipper->addChild( m_BonusCloud ); // 마스크를 적용할 객체 설정
maskClipper->setStencil( node ); // 마스크처리 객체에 마스크모양에 사용할 객체 설정
this->addChild( maskClipper ); // 마스크처리 객체를 화면에 표시
m_BonusCloud->setPositionX(405); // 마스크 대상 객체와 마스크 객체 좌표를 적절히 설정
m_BonusCloud->setPositionY(230);
cloudMask->setPosition( m_BonusCloud->getPosition());
setStencil에 사용할 객체에 drawPolygon으로 폴리곤이 그려진 CCDrawNode를 사용해도 된다.
cocos2d::CCSize size;
CCDrawNode* shape = CCDrawNode::create();
CCPoint pts[4];
pts[0] = ccp( -size.width/2, size.height/2 );
pts[1] = ccp( size.width/2, size.height/2 );
pts[2] = ccp( size.width/2, -size.height/2 );
pts[3] = ccp( -size.width/2, -size.height/2 );
shape->drawPolygon(pts, 4, ccc4f(1, 1, 1, 1), 0, ccc4f(1, 0, 0, 1));