cocos,截图分享,截取屏幕某一位置

因为需要做个屏幕固定位置的分享功能,做了一个小demo,

实现思路两步步

1、renderTexture接口截取固定位置

2、保存到沙盒本地

3、预留精灵返回值

以下就是具体实现

--[[ 

    截屏函数
    targetNode:截取父节点
    size:图片尺寸
    viewports:截取位置信息

--[[ 
function GD.util_createScreenSprite(targetNode, size, viewports)

    local winSize = size or cc.Director:getInstance():getWinSize()

    local width = size ~= nil and size.width or winSize.width

    local height = size ~= nil and size.height or winSize.height

    local renderTexture = cc.RenderTexture:create(width, height, cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888, gl.DEPTH24_STENCIL8_OES)



    if viewports then
        renderTexture:setVirtualViewport(viewports.rtBegin, viewports.fullRect, viewports.fullViewport)
    end

    renderTexture:begin()
    if targetNode then
        targetNode:visit()
    else
        cc.Director:getInstance():getRunningScene():visit()
    end
    renderTexture:endToLua()
    renderTexture:retain()

    local photoTexture = renderTexture:getSprite():getTexture()
    local pSprite = cc.Sprite:createWithTexture(photoTexture)
    pSprite:setFlippedY(true)
    renderTexture:release()

    return pSprite, renderTexture
end


function Code:screenShotFishToy()

    local showNode = {}
    local a = self:findChild("fishTank"):getParent():getChildren()
    for i, v in ipairs(a) do
        if v:isVisible() then
            if v:getName() ~= "fishTank" and v:getName() ~= "gameBg" then
                v:setVisible(false)
                table.insert(showNode, v)
            end
        end
    end


    local origin = cc.Director:getInstance():getVisibleOrigin()
    local visibleSize = cc.Director:getInstance():getVisibleSize()
    local viewports = {}
    viewports.rtBegin = cc.p(0, display.height)
    viewports.fullRect = cc.rect(origin.x, origin.y, display.width, display.height)
    viewports.fullViewport = cc.rect(origin.x, origin.y, display.width, display.height / 2)
    local spr, rt = util_createScreenSprite(self:findChild("fishTank"):getParent(), cc.size(display.width, display.height / 2), viewports)
    rt:saveToFile("FishManiaShopShare.png", true)

    for i, v in ipairs(showNode) do
        v:setVisible(true)
    end
end


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖鸟难飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值