制作一个类似遮罩的效果,然后抠出不该被遮挡的部分
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
//背景图@H_301_6@@H_404_7@ CCSprite* sp = CCSprite::create("PIC_BJ_CJ4.png");@H_404_7@ sp->setposition(ccp(640,400));@H_404_7@ addChild(sp);
//创建剪裁节点@H_301_6@@H_404_7@ CcclipPingNode* pClip = CcclipPingNode::create();
@H_404_7@ //设置是否反向,将决定画出来的圆是透明的还是黑色的@H_301_6@
pClip->setInverted(true);@H_404_7@ addChild(pClip);
//图层添加到剪裁节点上@H_301_6@@H_404_7@ cclayercolor* pLayer = cclayercolor::create(ccc4(0,110));@H_404_7@ pClip->addChild(pLayer);pLayer->setAnchorPoint(ccp(0.5,0.5));
//制作一个圆的数据@H_301_6@@H_404_7@ cccolor4F color = {0,0};//R G B 透明度@H_301_6@@H_404_7@ float radius = 55.0f;//半径@H_301_6@@H_404_7@ const int nCount = 200; //设置顶点数, 设圆有200个顶点@H_301_6@@H_404_7@ const float angel = 2.0f * (float)M_PI/nCount; //两个顶点与中心的夹角(弧度)@H_301_6@@H_404_7@ CCPoint circle[nCount];@H_404_7@ for (int i=0; i<nCount; i++)@H_404_7@ {@H_404_7@ float radian = i * angel;@H_404_7@ circle[i] = ccp(radius * cosf(radian),radius * sinf(radian));@H_404_7@ }
//制作一个四边形的数据@H_301_6@
const int Count = 4;@H_404_7@ static CCPoint pos[Count]; //多变形各点坐标 相对于postion的偏移@H_301_6@@H_404_7@ CCPoint center(visibleSize.wIDth/2,visibleSize.height/2);@H_404_7@ pos[0] = ccp(540,500);@H_404_7@ pos[1] = ccp(center.x + 100,center.y + 100);@H_404_7@ pos[2] = ccp(center.x + 100,center.y - 100);@H_404_7@ pos[3] = ccp(center.x - 100,center.y - 100);
@H_404_7@ //绘制四边形@H_301_6@@H_404_7@ pStencil = CCDrawNode::create();@H_404_7@ //pStencil->drawpolygon(circle,nCount,color,color); //绘制那个圆@H_301_6@@H_404_7@ //pStencil->setposition(visibleSize.wIDth/2,visibleSize.height/2); //数组circle的坐标是相对positon的偏移@H_301_6@
pStencil->drawpolygon(pos,Count,color); //绘制那个四边形@H_301_6@
pClip->setStencil(pStencil); //抠出这个多边形 @H_301_6@
@H_301_6@
以上整个代码在init中就好@H_301_6@
总结以上是内存溢出为你收集整理的cocos2dx 利用遮罩(蒙版)CCLayerColor制作及抠图全部内容,希望文章能够帮你解决cocos2dx 利用遮罩(蒙版)CCLayerColor制作及抠图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)