cocos2d-lua 图片裁剪自定义形状

cocos2d-lua 图片裁剪自定义形状,第1张

概述有两种方法一种是用clippingNode来进行遮罩--对节点进行遮罩式裁剪 --picPath and stencilPath 尺寸要一致, 更新节点需要移除之前的节点function cc.exports.exchangeImageToClipNode(imgNode, picPath, stencilPath,index) imgNode:setVisible(false)

有两种方法一种是用clipPingNode来进行遮罩--对节点进行遮罩式裁剪

--picPath and stencilPath 尺寸要一致, 更新节点需要移除之前的节点function cc.exports.exchangeImagetoClipNode(imgNode,picPath,stencilPath,index)    imgNode:setVisible(false)    local parent = imgNode:getParent()    local clipnode = parent:getChildByname("ClipNode"..tostring(index))    if clipnode then        clipnode:removeFromParent()    end    local clipNodeEx = cc.ClipPingNode:create()    parent:addChild(clipNodeEx)    local maskNode = imgNode:clone()    maskNode:loadTexture(picPath,ccui.TextureResType.localType)    maskNode:setVisible(true)    local sprite = cc.Sprite:create(stencilPath)    clipNodeEx:addChild(maskNode)    clipNodeEx:setStencil(sprite)    maskNode:setposition(imgNode:getposition())    sprite:setposition(imgNode:getposition())    clipNodeEx:setname("ClipNode"..tostring(index))    clipNodeEx:setInverted(true)    clipNodeEx:setAlphaThreshold(0.5)    return clipNodeExend

另一种是用renderTexture进行裁剪
--对纹理进行裁剪  裁剪的图片路径spritePath   裁剪的形状图片路径maskPathfunction cc.exports.maskedSprite(spritePath,maskPath)    local textureSprite = cc.Sprite:create(spritePath)    local textureSize = textureSprite:getContentSize()    local maskSprite = cc.Sprite:create(maskPath)    local maskSize = maskSprite:getContentSize()    local renderTexture = cc.RenderTexture:create(maskSize.wIDth,maskSize.height)    maskSprite:setposition(cc.p(maskSize.wIDth/2,maskSize.height/2))    textureSprite:setposition(cc.p(textureSize.wIDth/2,textureSize.height/2))    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 retSpriteend

第一种方法可以根据imagevIEw的尺寸自适应,不过有个BUG,如果有d出窗的层级高于在遮罩图片的被创建前父节点的层级,当遮罩图片被创建以后,d出窗也会被遮罩裁剪

第二种方法则是在利用需要裁剪的图片纹理,重新创建了一个裁剪图片,因此图片的大小是相对于纹理的尺寸,大小需要手动进行设置

总结

以上是内存溢出为你收集整理的cocos2d-lua 图片裁剪自定义形状全部内容,希望文章能够帮你解决cocos2d-lua 图片裁剪自定义形状所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1083758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存