直接上代码
说明:
> 模板(Stencil:可以使用Layer、Node、Sprite等。 //我使用了Sprite m_pImgStencil可以成功 Layer 失败 ps:我不会用
> 底板 :可以使用Layer、Node、Sprite等。 // m_pImgHero
> Layer层 // mainUI Layer
目的:在模板区域显示 英雄全身像 模板区域外 全身像内容不可见
//计划A
if (m_pImgHero != nullptr && m_pLayerHero != nullptr && m_pImgStencil == nullptr) {
auto clip = CCClippingNode::create();
clip->setAnchorPoint(ccp(0.5f, 0.5f));
auto sizeLayer = m_pLayerHero->getContentSize();
clip->setPosition(ccp(sizeLayer.width / 2, sizeLayer.height / 2));
m_pImgStencil = CCScale9Sprite::create("resource/ui/common/common_frame_main_3.png"); //裁剪模板;
m_pImgStencil->setAnchorPoint(ccp(0.5f, 0.5f));
m_pImgStencil->setPosition(ccp(0,0));
auto sizeBackground = m_pLayerHero->getContentSize();
m_pImgStencil->setContentSize(ccp(sizeBackground.width, sizeBackground.height));
m_pLayerHero->addChild(m_pImgStencil);
clip->setStencil(m_pImgStencil);
clip->setInverted(false);
//模板区域外透明度0
clip->setAlphaThreshold(0);
m_pImgHero->removeFromParent();
m_pImgHero->setPosition(ccp(0, 0));
m_pLayerHero->addChild(clip);
clip->addChild(m_pImgHero);
//模板的图片透明度
m_pImgStencil->setOpacity(0);
}