-
Creator 版本: creator2.4.10
-
标题: 经验分享:creator截图功能总结
-
直接贴代码:
// 1.创建一个 RenderTexture 对象
let renderTexture = new cc.RenderTexture();
let designResolutionSize = cc.visibleRect;
let width = designResolutionSize.width;
let height = designResolutionSize.height;
renderTexture.initWithSize(width, height);
console.log(“designResolutionSize”,designResolutionSize)
// 2.创建canvas
let canvas = qq.createCanvas();
console.log(canvas)
canvas.width = width;
canvas.height = height;
console.log("canvas.content: ", canvas.width, canvas.height);
// 3.创建Camera
var node = new cc.Node(“screen”);
node.parent = cc.Canvas.instance.node;
var camera = node.addComponent(cc.Camera);
camera.backgroundColor = cc.Color.TRANSPARENT;
camera.clearFlags = cc.Camera.ClearFlags.DEPTH | cc.Camera.ClearFlags.STENCIL | cc.Camera.ClearFlags.COLOR;
const worldPos = cc.Canvas.instance.node.convertToWorldSpaceAR(cc.Vec2.ZERO);
const localPos = camera.node.parent.convertToNodeSpaceAR(worldPos);
camera.node.setPosition(localPos);
camera.targetTexture = renderTexture;
camera.render();
camera.targetTexture = null;
// 4.获取绘图上下文
let ctx = canvas.getContext(‘2d’);
let data = renderTexture.readPixels();
// 绘制内容到 canvas
// 由于 RenderTexture 的像素数据是上下颠倒的,所以需要翻转
let rowBytes = width * 4;
let imageData = ctx.createImageData(width, height);
let dataIndex = 0
for (let row = 0; row < height; row++) {
let srow = height - 1 - row;
let start = srow * width * 4;
for (let i = 0; i < rowBytes; i++) {
// 这里对demo进行优化,不需要每一次绘制全部
imageData.data[dataIndex++] = data[start + i];
}
}
ctx.putImageData(imageData, 0, 0);
// 5.将 canvas 保存为临时文件
canvas.toTempFilePath({
success: (res) => {
// 保存成功,获取临时文件路径
const tempFilePath = res.tempFilePath;
console.log("临时文件路径: ", tempFilePath);
// 这里使用qq小游戏api进行保存资源
// 使用临时文件路径进行下一步操作,如保存到相册
qq.saveImageToPhotosAlbum({
filePath: tempFilePath,
success: () => {
console.log(‘图片保存成功’);
},
fail: (err) => {
console.error(‘图片保存失败’, err);
}
});
},
fail: (err) => {
// 保存失败
console.error(‘canvas 转临时文件失败’, err);
}
});
camera.targetTexture = null;
renderTexture.destroy();
-
亲测效果OK,如有新方案,欢迎分享讨论
4赞
该功能基于creator2.4demo改进
大佬能发个3.8.2版本的不,新版本不太适用
为什么我的截图是白屏。。。