[LayaAirIDE3]相机截图报错

脚本:
 @property(Laya.Image)
    public img:Laya.Image; 
    @property(Laya.Sprite)
    public sprite:Laya.Sprite;
   
    @property(Laya.Camera)
    public camera:Laya.Camera;
    public onAwake(): void {
        // var carImage = this.TakePhoto(this.owner.getChildByName("Main Camera") as Laya.Camera);
        var url=this.TakePhoto(this.camera);
            this.img.url = url;
       
    //   this.takePhotoAndDisplayOnSprite (this.camera,this.sprite); 
    }
   
    public  TakePhoto(renderTargetCamera: Laya.Camera): string { 
        try {
            renderTargetCamera.renderingOrder = -1;
            let width = renderTargetCamera.viewport.width;
            let height = renderTargetCamera.viewport.height;
            let renderTexture: Laya.RenderTexture = new Laya.RenderTexture(width, height, Laya.RenderTargetFormat.R32G32B32, Laya.RenderTargetFormat.R32G32B32);
            Laya.Camera.drawRenderTextureByScene(renderTargetCamera, renderTargetCamera.scene, renderTexture);
            // // 截图绘制
            let rtex = new Laya.Texture(renderTargetCamera.renderTarget, Laya.Texture.DEF_UV);
            // let sprite = new Laya.Sprite();  
            // sprite.graphics.drawTexture(rtex, 0, 0, width, height);
            console.log("图片Start:");
            // //to PicBase64
            var newHtmlCanvas: Laya.HTMLCanvas = new Laya.HTMLCanvas(true);
            newHtmlCanvas.size(width, height);
            newHtmlCanvas.context.drawTexture(rtex, 0, 0, width, height);
            var url = newHtmlCanvas.source.toDataURL("image/png", 0.6)
            console.log("图片:" + url);
            return url;
        }
        catch (e) {
          console.log("截图失败",e);
            return "截图失败"+e;
        } 
       
    }
截图失败 TypeError: newHtmlCanvas.context.drawTexture is not a function
 
 
 
 
 
}
已邀请:

Laya_Fred

赞同来自:

您好,在使用canvas截图相机内容时,您需要指定为使用原生canvas的canvasRenderdingContext对象,而不是Laya.Context,并可以使用drawImage来进行处理,同时这里传入的就不是rtex而是newHtmlCanvas.source内容。您可以这样处理试下:
var newHtmlCanvas: Laya.HTMLCanvas = new Laya.HTMLCanvas(true);
newHtmlCanvas.size(width, height);
(newHtmlCanvas.context as any).drawImage(newHtmlCanvas.source, 0, 0, width, height);
var url = newHtmlCanvas.source.toDataURL("image/png", 0.6)

要回复问题请先

商务合作
商务合作