cocos2dx裁剪头像

--裁切
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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值