以下是ts脚本,除了调用java(jsb那一段)需要改成自己的,其他的就算是报错也不用改,亲自试用过
/**
* 截屏分享
*/
public static shareWithFriendImg(content) {
if (CC_JSB) {
//需要自己自行再创建一个 Camera depth要高于MainCamera 不然会黑屏
let camera=cc.find('Canvas/Camera').getComponent(cc.Camera);
let texture = new cc.RenderTexture();
texture.initWithSize(1280,720,cc.gfx.RB_FMT_D24S8);
//cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888,0x88F0
camera.targetTexture = texture;
let width = texture.width;
let height = texture.height;
let canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
canvas.width = width;
canvas.height = height;
camera.render();
let data = texture.readPixels();
//以下代码将截图后默认倒置的图片回正
let picData = new Uint8Array(width * height * 4);
let rowBytes = width * 4;
for (let row = 0; row < height; row++) {
let srow = height - 1 - row;
let start = Math.floor(srow * width * 4);
let reStart = row * width * 4;
// save the piexls data
for (let i = 0; i < rowBytes; i++) {
picData[reStart + i] = data[start + i];
}
}
let fileName = "/result_share.jpg";
let fullPath = jsb.fileUtils.getWritablePath() + fileName;
// //保存图片
jsb.saveImageData(picData, width, height, fullPath);
if (cc.sys.OS_IOS == cc.sys.os) {
jsb.reflection.callStaticMethod("IOSWeChatMgr", "shareWithWeixinFriendImg:ImagePath:", content, '');
} else if (cc.sys.OS_ANDROID == cc.sys.os) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "ShareImageWX", "(Ljava/lang/String;I)V", jsb.fileUtils.getWritablePath() + '/result_share.jpg', 0);
} else {
return;
}
}
}
/**
* 只分享文字
*/
public static shareWithFriendContent(content: string) {
if (CC_JSB) {
if (cc.sys.OS_IOS == cc.sys.os) {
jsb.reflection.callStaticMethod("IOSWeChatMgr", "shareWithWeixinFriendImg:ImagePath:", content, jsb.fileUtils.getWritablePath() + 'dx_screenshot.png');
} else if (cc.sys.OS_ANDROID == cc.sys.os) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "ShareTextWX", "(Ljava/lang/String;I)V", content, 0);
} else {
return;
}
}
}
/**
* 分享超链接图片
*/
public static shareWithFriendUrl(title, content, url) {
if (cc.sys.OS_IOS == cc.sys.os) {
jsb.reflection.callStaticMethod("IOSWeChatMgr", "shareWithWeixinFriendUrl:Title:Content:ImagePath:", url, title, content, '');
} else if (cc.sys.OS_ANDROID == cc.sys.os) {
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "ShareUrlWX", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V", url, title, content, '', 0);
} else {
return;
}
}
网友评论