---遮罩的实现

function NodeHelper:createMaskedLayer(parentNode,preferedSize,position,inverted)    ---遮罩的实现
    if inverted == nil then inverted = true end
    if parentNode:getChildByTag(90030) then
        parentNode:removeChildByTag(90030,true)
    end


    local layer = CCLayerColor:create()
    layer:setOpacity(128)  --透明度降低一半
    layer:setColor(NodeHelper:_getColorFromSetting("0 0 0"))
    layer:setTag(520101)
    layer:setZOrder(-100)  
    layer:setPosition(ccp(0,0))
    layer:setAnchorPoint(ccp(0,0))
    --layerSize高度稍微大于屏幕高度
    local layerSize = CCSizeMake(CCDirector:sharedDirector():getWinSize().width,CCDirector:sharedDirector():getWinSize().height*1.2)
    layer:setContentSize(layerSize)


    local clipNode = CCClippingNode:create()  --创建一个裁剪节点来实现遮罩的效果
    local stencilNode = CCNode:create()
    stencilNode:setContentSize(layerSize)
    stencilNode:setPosition(ccp(0,0))
    local sprite9 = CCScale9Sprite:create("UI/MainScene/9Sprite/u_9Sprite15.png")
    sprite9:setPreferredSize(preferedSize)   --setPreferredSize 就是设置需要生成的尺寸大小。
    sprite9:setPosition(position)
    sprite9:setAnchorPoint(ccp(0,0))
    stencilNode:addChild(sprite9)  --将sprite9添加到node中
    clipNode:setStencil(stencilNode)  --裁剪节点将按照这个模板来裁剪区域
    clipNode:setAnchorPoint(ccp(0,0))
    clipNode:setPosition(ccp(0,0))
    clipNode:addChild(layer)
    clipNode:setTag(90030)
    clipNode:setZOrder(-100)
    clipNode:setInverted(inverted)   --用来设置显示裁剪区域还是非裁剪区域的
    parentNode:addChild(clipNode)  
    return clipNode,90030
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值