CCWechatScreenShotMgr.js 4.69 KB
"use strict";
cc._RF.push(module, '30a8a4KflZMb4d4TT1dV25C', 'CCWechatScreenShotMgr');
// script/common/CCWechatScreenShotMgr.ts

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
let CCWechatScreenShotMgr = /** @class */ (() => {
    class CCWechatScreenShotMgr {
        static getInstance() {
            return CCWechatScreenShotMgr._instance;
        }
        /**
         *
         * @param worldPos 节点的世界坐标
         * @param width 节点的宽度
         * @param height 节点的高度
         */
        doShot(worldPos, width, height, successCallback = () => { }, successCheckCallback = () => false, shareFailCallback = () => { }, failCallback = () => { }, completeCallback = () => { }) {
            if (cc.sys.platform === cc.sys.WECHAT_GAME) {
                if (!wx.showShareImageMenu) {
                    console.log("截图失败");
                    shareFailCallback();
                    return;
                }
                const ccCanvas = cc.find("Canvas");
                const xscale = (worldPos.x - width / 2) / ccCanvas.width;
                const yscale = 1 - (worldPos.y + height / 2) / ccCanvas.height;
                let x = canvas.width * xscale;
                let y = canvas.height * yscale;
                const w = width / ccCanvas.width * canvas.width;
                const h = height / ccCanvas.height * canvas.height;
                let data = {
                    x: x,
                    y: y,
                    width: w,
                    height: h,
                    destWidth: w,
                    destHeight: h,
                    fileType: 'png',
                    quality: 1,
                    success: (res) => {
                        if (successCheckCallback() === false) {
                            console.log("截图界面被关闭");
                            return;
                        }
                        console.log("截图成功");
                        console.log("res: ", res);
                        console.log("res.tempFilePath: ", res.tempFilePath);
                        wx.showShareImageMenu({
                            path: res.tempFilePath
                        });
                        //     //分享卡片
                        //     wx.shareAppMessage({
                        //         imageUrl: res.tempFilePath
                        //    })
                        successCallback();
                    },
                    fail: (e) => {
                        console.log("截图失败");
                        console.log(e);
                        failCallback();
                    },
                    complete: () => {
                        console.log("截图完成");
                        completeCallback();
                    }
                };
                let _tempFilePath = canvas.toTempFilePath(data);
                cc.log(`Capture file success!${_tempFilePath}`);
            }
        }
        shotFullScreen(successCallback = () => { }, successCheckCallback = () => false, shareFailCallback = () => { }, failCallback = () => { }, completeCallback = () => { }) {
            if (cc.sys.platform === cc.sys.WECHAT_GAME) {
                //canvas 是微信的,报错不用管
                //单纯的分享一张图
                if (!wx.showShareImageMenu) {
                    console.log("截图失败");
                    shareFailCallback();
                    return;
                }
                canvas.toTempFilePath({
                    success: (res) => {
                        if (successCheckCallback() === false) {
                            console.log("截图界面被关闭");
                            return;
                        }
                        console.log("截图成功");
                        wx.showShareImageMenu({
                            path: res.tempFilePath
                        });
                        //     //分享卡片
                        //     wx.shareAppMessage({
                        //         imageUrl: res.tempFilePath
                        //    })
                        successCallback();
                    },
                    fail: (e) => {
                        console.log("截图失败");
                        console.log(e);
                        failCallback();
                    },
                    complete: () => {
                        console.log("截图完成");
                        completeCallback();
                    }
                });
            }
        }
    }
    CCWechatScreenShotMgr._instance = new CCWechatScreenShotMgr();
    return CCWechatScreenShotMgr;
})();
exports.default = CCWechatScreenShotMgr;

cc._RF.pop();