您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 遮罩效果实现

2013-03-29 17:24 225 查看
   

遮罩图片:白色

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: