cocos2d-lua 不渲染纹理,保存当前场景纹理为图片的方法
发布时间:2020-12-14 16:54:27 所属栏目:百科 来源:网络整理
导读:function WeixinShareTips.createWeixinImageFile(bShareCurrentScene,func_next) local imgSize = cc.size(640,960) local backGround = { path = "weixin/background_twoDimension.jpg",pos = cc.p(imgSize.width / 2,imgSize.height / 2),scale = 1 } loc
function WeixinShareTips.createWeixinImageFile(bShareCurrentScene,func_next) local imgSize = cc.size(640,960) local backGround = { path = "weixin/background_twoDimension.jpg",pos = cc.p(imgSize.width / 2,imgSize.height / 2),scale = 1 } local logo = { path = cc.logos[cc.getSDKPlat()],pos = cc.p(503,848),scale = 0.51 } local twoDimension = { path = nil,pos = cc.p(532,106),scale = 1 } if bShareCurrentScene then backGround = nil logo.pos = cc.p(117,550) twoDimension = nil imgSize = cc.size(960,640) logo.scale = 0.3 elseif cc.getSDKPlat() == "ios_yd" then twoDimension.path = "weixin/twoDimension_bierangwomaoxian.jpg" elseif cc.getSDKPlat() == "ios_yd2" then twoDimension.path = "weixin/twoDimension_maoxianqishituan.jpg" elseif cc.getSDKPlat() == "ios_yd3" then twoDimension.path = "weixin/twoDimension_menghuanqishituan.jpg" else backGround.path = "weixin/background_noDimension.jpg" twoDimension = nil end local bigImagePath = WeixinShareTips.createWeixinImageFileWithLogoAndTwoDimension("bigWeixinShare.jpg",backGround,logo,twoDimension,imgSize) local saveRet = bigImagePath ~= nil local function delayDoSomething(call_todo) cc.Director : getInstance() : getRunningScene() : runAction(cc.Sequence:create( cc.DelayTime:create(0.1),cc.CallFunc:create(function () call_todo() end))) end delayDoSomething(function() local imgScale = 1/8 imgSize = cc.size(imgSize.width * imgScale,imgSize.height * imgScale) backGround = { path = bigImagePath,scale = imgScale } local smallImagePath = WeixinShareTips.createWeixinImageFileWithLogoAndTwoDimension("smallWeixinShare.jpg",nil,imgSize) delayDoSomething(function() saveRet = saveRet and (smallImagePath ~= nil) func_next(saveRet,smallImagePath,bigImagePath) end) end) end function WeixinShareTips.createWeixinImageFileWithLogoAndTwoDimension(toFileName,imgSize) local function createRenderNodeWithPathPos(pathPos) local sprite = nil if pathPos then sprite = cc.Sprite:create(pathPos.path) sprite : setPosition(pathPos.pos) sprite : setScale(pathPos.scale) end return sprite end local function createRenderTextureWithNodes(logoRenderNode,twoDimensionNode,backGroundNode) -- body local renderTexture = cc.RenderTexture:create(imgSize.width,imgSize.height) renderTexture : beginWithClear(0,0) if backGroundNode and (cc.Director:getInstance():getRunningScene() ~= backGroundNode) then backGroundNode : getTexture() : setTexParameters(cc.GL_LINEAR,cc.GL_LINEAR,cc.GL_CLAMP_TO_EDGE,cc.GL_CLAMP_TO_EDGE) end if backGroundNode then backGroundNode : visit() end if logoRenderNode then logoRenderNode : visit() end if twoDimensionNode then twoDimensionNode : visit() end renderTexture : endToLua() return renderTexture end local function createImageFileWithRenderTexture(renderTexture) local saveRet = renderTexture : saveToFile(toFileName,cc.IMAGE_FORMAT_JPEG,false) cc.Director : getInstance() : getTextureCache() : removeTextureForKey( cc.FileUtils:getInstance():getWritablePath() .. toFileName) if saveRet then return cc.FileUtils:getInstance():getWritablePath() .. toFileName else cc.showTextTips("保存图片失败") return nil end end local logoNode = createRenderNodeWithPathPos(logo) local twoDimensionNode = createRenderNodeWithPathPos(twoDimension) local backGroundNode = createRenderNodeWithPathPos(backGround) if not backGroundNode then backGroundNode = cc.Director:getInstance():getRunningScene() end local renderTexture = createRenderTextureWithNodes(logoNode,backGroundNode) return createImageFileWithRenderTexture(renderTexture) end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |