遮罩图片:白色
static CCSprite* createMaskedSprite(CCSprite* src, const char* maskFile, CCSize maskSize);
CCSprite* StartupGuideLayer::createMaskedSprite(CCSprite* src, const char* maskFile, CCSize maskSize)
{
CCSprite * mask = CCSprite::create(maskFile);
assert(src);
assert(mask);
CCSize srcContent = src->getContentSize();
CCSize maskContent = mask->getContentSize();
CCRenderTexture * rt = CCRenderTexture::create(srcContent.width, srcContent.height, kTexture2DPixelFormat_RGBA8888);
float ratiow = maskSize.width / maskContent.width;
float ratioh = maskSize.height / maskContent.height;
mask->setScaleX(ratiow);
mask->setScaleY(ratioh);
mask->setPosition(ccp(srcContent.width / 2, srcContent.height / 2));
src->setPosition(ccp(srcContent.width / 2, srcContent.height / 2));
ccBlendFunc blendFunc2 = { GL_ONE, GL_ZERO };
mask->setBlendFunc(blendFunc2);
ccBlendFunc blendFunc3 = { GL_DST_ALPHA, GL_ZERO };
src->setBlendFunc(blendFunc3);
rt->begin();
mask->visit();
src->visit();
rt->end();
CCSprite * retval = CCSprite::createWithTexture(rt->getSprite()->getTexture());
retval->setFlipY(true);
return retval;
}
调用例子:
CCSprite * spriteGuide = CCSprite::create(tempBuffer);
spriteGuide = StartupGuideLayer::createMaskedSprite(spriteGuide, "ui_mask_bai.png", m_size);