Cocos2d-x截屏卡顿的问题

local size = CCDirector:sharedDirector():getWinSize()
local screen = CCRenderTexture:create(size.width, size.height)
local scene = CCDirector:sharedDirector():getRunningScene()
screen:begin()
scene:visit()
screen:endToLua()
screen:saveToFile(“test.png”, kCCImageFormatPNG)

用这种方式截屏,截整个屏幕,会出现卡顿的现象,很影响用户体验,有没有其他高效率的截屏方式,或者,这种方式可不可以控制只截屏幕的某个区域?

卡顿是因为save操作造成的。我建议截取屏幕后不要立即保存,就放内存里。等需要的时候再放内存。

怎么做呢?

一般截图就是为了分享。完全可以在玩家点击分享按钮后,用 device.showActivityIndicator() 显示一个进度指示器(就是转圈的菊花)。然后保存CCRenderTexture的内容到文件,再启动SDK的分享对话框。最后用 device.hideActivityIndicator() 隐藏进度指示器。