此功能的要点同,如何取得wx,
if (Laya.Browser.onMiniGame) {
this.wx = Laya.Browser.window.wx;
}
然后通过wx.createCanvas()创建一个离屏canvas.然后通过canvas.getContext('2d')取得context,再通过context画图,以及上面写文字,最后通过canvas.toTempFilePathSync动态生成一个图片,作为分享的素材.
以下是分享函数完整代码:
private onShare(e: Laya.Event): void {
if (this.wx == null) {
this.playerControl.Relive(true);
return;
}
var canvas = this.wx.createCanvas();
canvas.width = 640;
canvas.height = 480;
var context = canvas.getContext('2d');
var bgm = this.wx.createImage();
bgm.src = 'res/Texture/Share.png';
bgm.onload = () => {
context.drawImage(bgm, 0, 0, 640, 480);
context.fillStyle = "rgba(0,0,0,1)";
context.font = "bold 30px Arial";
context.textAlign = "left";
context.textBaseline = "middle";
context.fillText("米数", 200, 100);
context.fillText(this.label_distance.text + " M", 240, 190);
this.wx.shareAppMessage({
title: "我在【云端酷跑】跑了" + this.label_distance.text + "米,敢与我比比吗?",
imageUrl: canvas.toTempFilePathSync({
destWidth: 640,
destHeight: 480
}),
success: () => {
this.playerControl.Relive(true);
},
fail: () => {
this.playerControl.Relive(false);
}
})
}
}