收藏
回答

接入子域后 为什么截图失效?获得的图片信息全是空白?

在2.9.4微信基础库 不行 在2.6.0基础库的时候又可以?

回答关注问题邀请回答
收藏

3 个回答

  • 小游戏运营专员-宏
    小游戏运营专员-宏
    2019-12-11

    你好,请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2019-12-11
    有用
    回复 1
    • SolarFrank
      SolarFrank
      2019-12-11
      我用的creator 打包发布都微信小游戏
      这种截图方法 得到的截图 Uint8Array 全是 0 就是空白图
      2019-12-11
      回复
  • SolarFrank
    SolarFrank
    2019-12-11


    const { ccclassproperty } = cc._decorator;


    @ccclass

    export default class Test extends cc.Component {


        @property(cc.Camera)

        cameracc.Camera = null;  //相机


        @property(cc.Node)

        spritecc.Node = null//需要去截的图


        @property(cc.Node)

        drawspritecc.Node = null;  //截图后放入该节点


        // LIFE-CYCLE CALLBACKS:


        // onLoad () {}


        start() {

            let gpTexture = new cc.RenderTexture(); //绘制

            //@ts-ignore

            gpTexture.initWithSize(cc.winSize.widthcc.winSize.heightcc.game._renderContext.STENCIL_INDEX8);

            // gpTexture.initWithSize(this.sprite.width, this.sprite.height);

            this.camera.targetTexture = gpTexture;//相机绘制,将屏幕上的内容更新到renderTexture中

            this.camera.render(this.sprite);


            let vcc.Vec2 = this.node.convertToWorldSpaceAR(this.sprite.getPosition())

            let x = v.x - this.sprite.width * this.sprite.anchorX;

            let y = v.y - this.sprite.height * this.sprite.anchorY;

            let dataUint8Array;

            // console.log("drawData",x,y,node.width,node.height);


            data = gpTexture.readPixels(dataxythis.sprite.widththis.sprite.height);//读取renderTexture中的数据

            // data = gpTexture.readPixels();//读取renderTexture中的数据


            let canvas = this.createCanvasByDate(datathis.sprite.widththis.sprite.height);


            let texture = new cc.Texture2D();

            texture.initWithElement(canvas);


            let spriteFrame = new cc.SpriteFrame();

            spriteFrame.setTexture(texture);



            this.drawsprite.getComponent(cc.Sprite).spriteFrame = spriteFrame;


        }


        //根据纹理data返回canvas

        createCanvasByDate(dataUint8Arraywidthnumberheightnumber) {

            let canvas;

            if (cc.sys.platform === cc.sys.WECHAT_GAME) {

                canvas = wx.createCanvas();

            } else {

                canvas = document.createElement('canvas');

            }

            canvas.width = width;

            canvas.height = height;

            let ctx = canvas.getContext('2d');

            let rowBytes = width * 4;

            for (let row = 0row < heightrow++) {

                let srow = height - 1 - row;

                let imageData = ctx.createImageData(width1);

                let start = srow * width * 4;

                for (let i = 0i < rowBytesi++) {

                    imageData.data[i] = data[start + i];

                }


                ctx.putImageData(imageData0row);

            }

            return canvas;

        }





        // update (dt) {}

    }



    2019-12-11
    有用
    回复
  • 子不语
    子不语
    2019-12-11

    你好,请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2019-12-11
    有用
    回复 3
    • SolarFrank
      SolarFrank
      2019-12-11
      我用的creator 打包发布都微信小游戏
      这种截图方法 得到的截图 Uint8Array 全是 0 就是空白图
      2019-12-11
      回复
    • Not Found
      Not Found
      03-28回复SolarFrank
      我用laya也有这个问题,你这边解决了吗
      03-28
      回复
    • SolarFrank
      SolarFrank
      04-01
      没有
      04-01
      回复
登录 后发表内容
问题标签