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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。