小游戏截图透明问题

  • 小游戏使用截图分享功能, 绘制子域之后,在调试基础库2.6.4 , 2.6.5下 截图是透明的。

发现只要添加了子域就会出现黑屏,微信开发者工具 2.6.4 以上 使用 readPixels 读取的数据全是 0

使用微信的截图接口吧。
canvas.toTempFilePathSync();

用的就是这个接口啊,关键调用这个接口之前绘制的canvas是一张透明图片。应该是微信对readPixels这个接口进行了限制。请问下小游戏有别的截图方式吗?

你给我一个你的测试demo,我今天试了截子域的图是没问题的。

已把测试工程发送到您 337031709@qq.com,麻烦帮忙看一下,谢谢:rose:

微信的截图接口可以直接调用,不用再使用creator的rendtexture之后再去绘制一个canvas然后截图。游戏初始化是creator已经创建了一个canvas绘制游戏场景了。

如果 我只需要截一个节点的内容呢,不需要包含整个界面

:sweat_smile: 这个可以截矩形,如果节点的贴图是不规则的,或者是个圆的话,节点底下的内容也会被截进去吧

我现在也遇到这个问题了 ?你是怎么解决的呢?我要截图是带遮罩的

toTempFilePathWx2 () {
var scheduler = cc.director.getScheduler();
var self= this;
scheduler.schedule(function () {
var canvas = wx.createCanvas();
var sceneSize = cc.director.getWinSize();
canvas.width = sceneSize.width;
canvas.height = sceneSize.height;
// canvas坐标左上角开始算 toTempFilePathSync 异步接口
canvas.toTempFilePath({
x: 0,
y:0,
width: sceneSize.width,
height: sceneSize.height,
destWidth: sceneSize.width,
destHeight: sceneSize.height,
fileType: ‘png’,
quality: 1,
success: function (res) {
let picUrl = res.tempFilePath;
self.sceneAddPic(picUrl);
},

            fail: function () {
                if (params.failed) {
                    params.failed();
                }
            }
        });
    }, this, 0, 0, 0, false);
},


sceneAddPic (urlimg) {
    setTimeout(()=>{this.textNode.active = false; },5000);
    var node = new cc.Node("New Node");
    var sprite = node.addComponent(cc.Sprite);
    node.parent = this.addNode;//cc.director.getScene();
    node.anchorX = 0;
    node.anchorY = 0;
    node.x = 360;
    node.y = 640;

    var image = new Image();
    image.src = urlimg;
    image.onload = function () {
        try{
            image.onload = null;
            image.onerror = null;
            var texture = new cc.Texture2D();
            texture.initWithElement(image);
            texture.handleLoadedTexture();
            let spriteFrame = new cc.SpriteFrame();
            spriteFrame.setTexture(texture);
            sprite.spriteFrame = spriteFrame;
        }catch(e){}
    };
},

你好,这种截图,没有显示,通过断点texture是不对的,请问怎么解决! 环境微信平台下。

调用这个方法之前,先调用一下camera.render(),透明问题就解决了,不用creator官方的微信截图方案

大佬,可以分享一下子域截图的代码吗?我这边canvas取cc.game.canvas无论开不开子域都是黑图
let canvas: any = game.canvas

let tempFilePath =canvas.toTempFilePathSync({

                    destWidth: 400,

                    destHeight: 300,

})
data.outFilePath =tempFilePath
data.callback && data.callback(data, pixels_new);

微信工具无效!!!只能真机