--裁切
function CutImage(textureSprite, maskSprite, iScale)
local textureSize = textureSprite:getContentSize()
maskSprite:setScale(iScale)
local maskSize = maskSprite:getContentSize()
maskSize = cc.size(maskSize.width*iScale, maskSize.height*iScale)
local renderTexture = cc.RenderTexture:create(maskSize.width,maskSize.height)
maskSprite:setPosition(cc.p(maskSize.width/2,maskSize.height/2))
textureSprite:setPosition(cc.p(maskSize.width/2,maskSize.height/2))
textureSprite:setScaleX(maskSize.width/textureSize.width)
textureSprite:setScaleY(maskSize.height/textureSize.height)
maskSprite:setBlendFunc(cc.blendFunc(GL_ONE,GL_ZERO))
textureSprite:setBlendFunc(cc.blendFunc(GL_DST_ALPHA,GL_ZERO))
renderTexture:begin()
maskSprite:visit()
textureSprite:visit()
renderTexture:endToLua()
local retSprite = cc.Sprite:createWithTexture(renderTexture:getSprite():getTexture())
retSprite:setFlippedY(true)
return retSprite
end
function createClipHead2( useritem, headSize, clippingfile )
if nil == useritem then
return
end
useritem = HeadSprite.checkData(useritem)
local sp = HeadSprite.new()
sp.m_headSize = headSize
local spRender = sp:initHeadSprite(useritem)
if nil == spRender then
return nil
end
--创建裁剪
local strClip = "AvatarBg.png"
if nil ~= clippingfile then
strClip = clippingfile
end
local clipSp = nil
local frame = cc.SpriteFrameCache:getInstance():getSpriteFrame(strClip)
if nil ~= frame then
clipSp = cc.Sprite:createWithSpriteFrame(frame)
else
clipSp = cc.Sprite:create(strClip)
end
if nil ~= clipSp then
--裁剪
local clip = cc.ClippingNode:create()
clip:setStencil(clipSp)
clip:setAlphaThreshold(0)
clip:addChild(spRender)
local selfSize = sp:getContentSize()
clip:setPosition(cc.p(selfSize.width * 0.5, selfSize.height * 0.5))
sp:addChild(clip)
return sp
end
return nil
end