cocos js端屏幕截屏分享

// 微信分享屏幕截图
    shareScreenshot: function () {
        // 网页端不支持
        if (cc.sys.isBrowser) {
            cc.log('网页端不支持微信分享~');
            return;
        }

        // 正在截图中判断
        if (this._isCapturing) {
            return;
        }
        this._isCapturing = true;

        // 截图文件判断
        var fileName = "shareScreenshot.jpg";
        var fullPath = jsb.fileUtils.getWritablePath() + fileName;
        if (jsb.fileUtils.isFileExist(fullPath)) {
            jsb.fileUtils.removeFile(fullPath);
        }

        // 截图并保存图片文件
        var size = cc.director.getWinSize(); // 获取视图大小
        var texture = new cc.RenderTexture(size.width, size.height); // 新建渲染纹理
        texture.setPosition(cc.p(size.width / 2, size.height / 2)); // 移动渲染纹理到视图中心
        texture.begin(); // 开始渲染
        cc.director.getRunningScene().visit(); // 访问当前场景
        texture.end(); // 渲染结束
        texture.saveToFile(fileName, cc.IMAGE_FORMAT_JPG); // 保存渲染纹理到图片文件
        console.log("渲染纹理完成");
        // 延时50毫秒,检测截图文件是否存在
        // 重复10次这个过程,如果超过10次仍没检测到图片文件,截图失败(超时)
        var self = this;
        var tryTimes = 0;
        var fn = function () {
            if (jsb.fileUtils.isFileExist(fullPath)) {
                // 调用相应平台微信分享图片方法
                if (cc.sys.os === cc.sys.OS_ANDROID) {
                    jsb.reflection.callStaticMethod('org/cocos2dx/javascript/ShareImage', 'shareIMG', '(Ljava/lang/String;)V', fullPath);
                    console.log("分享成功!!!");
                } else if (cc.sys.os === cc.sys.OS_IOS) {
                    jsb.reflection.callStaticMethod('AppController', 'shareIMG:', fullPath);
                }
                self._isCapturing = false;
            } else {
                tryTimes++;
                if (tryTimes > 10) {
                    self._isCapturing = false;
                    cc.log('截图失败,超时~');
                    return;
                }
                setTimeout(fn, 50);
            }
        };
        setTimeout(fn, 50);
        console.log("截图完成!!");
    },

官方API

安卓部分:

/**
 * 分享图片
 */
public static void shareIMG(String path) {
	// 初始化WXImageObject对象
	Bitmap bmp = BitmapFactory.decodeFile(path);
	WXImageObject imgObj = new WXImageObject(bmp);

	// 初始化WXMediaMessage对象
	WXMediaMessage msg = new WXMediaMessage();
	msg.mediaObject = imgObj;
	
	// 设置缩略图
	Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, 128, 72, true);
	bmp.recycle();
	msg.thumbData = Util.bmpToByteArray(thumbBmp, true); // Util工具类在微信官方的范例代码中
	
	// 构造一个Req
	SendMessageToWX.Req req = new SendMessageToWX.Req();
	req.transaction = buildTransaction("img"); // transaction字段用于唯一标识一个请求
	req.message = msg;
	req.scene = SendMessageToWX.Req.WXSceneSession;
	
	// 调用api接口发送数据到微信
	api.sendReq(req);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值