支付页面
qrcode生成,剪贴板sdk
This commit is contained in:
@@ -314,6 +314,17 @@ export class SDKManager { //extends Component
|
||||
}
|
||||
|
||||
|
||||
//region 复制到剪贴板
|
||||
/**复制文本到剪贴板 */
|
||||
static copyToClipboard(text: string, cb?: Function) {
|
||||
if (this.sdk.copyToClipboard) {
|
||||
this.sdk.copyToClipboard(text, cb);
|
||||
} else {
|
||||
Utils.Log("当前平台不支持复制功能");
|
||||
cb && cb(false);
|
||||
}
|
||||
}
|
||||
|
||||
//region 友盟+
|
||||
static Uma_Event_TalkRound = "_um.talk.round"; //聊天轮次
|
||||
static Uma_Event_LvUnlock = "_um.lv.unlock"; //解锁新关卡
|
||||
|
||||
@@ -569,7 +569,24 @@ export class ByteDanceSDK{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//region 复制到剪贴板
|
||||
/**复制文本到剪贴板 */
|
||||
copyToClipboard(text: string, cb?: Function) {
|
||||
console.log("抖音 复制到剪贴板:", text);
|
||||
window['tt'].setClipboardData({
|
||||
data: text,
|
||||
success: () => {
|
||||
console.log("抖音 复制成功");
|
||||
cb && cb(true);
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log("抖音 复制失败:", err);
|
||||
cb && cb(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//region 友盟+
|
||||
umaInit() {
|
||||
}
|
||||
|
||||
@@ -761,7 +761,23 @@ export class KSSDK{
|
||||
this.replayBgAudioPause()
|
||||
}
|
||||
|
||||
|
||||
//region 复制到剪贴板
|
||||
/**复制文本到剪贴板 */
|
||||
copyToClipboard(text: string, cb?: Function) {
|
||||
console.log("快手 复制到剪贴板:", text);
|
||||
window['ks'].setClipboardData({
|
||||
data: text,
|
||||
success: () => {
|
||||
console.log("快手 复制成功");
|
||||
cb && cb(true);
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log("快手 复制失败:", err);
|
||||
cb && cb(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//region 友盟+
|
||||
umaInit() {
|
||||
}
|
||||
|
||||
@@ -7,290 +7,380 @@ import Utils from "../Common/Utils";
|
||||
import { InnerMsgCode } from "../Config/InnerMsgCode";
|
||||
import { VideoRoleType } from "../Common/GlobalValue";
|
||||
|
||||
export class WebSDK{
|
||||
export class WebSDK {
|
||||
//初始化
|
||||
init(cb: Function = null) {
|
||||
console.log("init webSDK");
|
||||
cb && cb();
|
||||
}
|
||||
|
||||
//初始化
|
||||
init(cb: Function = null) {
|
||||
console.log("init webSDK");
|
||||
cb && cb();
|
||||
}
|
||||
//检查权限
|
||||
checkAutoSetting(autoKey: string, cb: Function = null) {
|
||||
cb && cb(true);
|
||||
}
|
||||
|
||||
//检查权限
|
||||
checkAutoSetting(autoKey:string, cb:Function = null) {
|
||||
cb && cb(true);
|
||||
}
|
||||
//获取用户信息
|
||||
getUserInfo(cb: Function = null) {
|
||||
let name = HttpUnit.GetNickName();
|
||||
cb &&
|
||||
cb({
|
||||
nickName: name,
|
||||
avatarUrl: "https://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/webHead.png",
|
||||
});
|
||||
}
|
||||
|
||||
//获取用户信息
|
||||
getUserInfo(cb:Function = null) {
|
||||
let name = HttpUnit.GetNickName();
|
||||
cb && cb({ nickName:name, avatarUrl:"https://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/webHead.png" });
|
||||
//region 登录
|
||||
login(cb: Function = null) {
|
||||
cb && cb({ platform: 2, code: null });
|
||||
}
|
||||
|
||||
//显示视频广告
|
||||
show_video(callback: Function, tag: number) {
|
||||
callback && callback({ code: 0, tag: tag });
|
||||
SDKManager.video_ad_back();
|
||||
}
|
||||
|
||||
//显示插屏
|
||||
show_splash() {}
|
||||
|
||||
//显示Banner
|
||||
show_banner(...args) {}
|
||||
|
||||
//隐藏Banner
|
||||
hide_banner(...args) {}
|
||||
|
||||
//主动拉起分享
|
||||
show_share(rewardCB?: Function) {
|
||||
rewardCB && rewardCB();
|
||||
}
|
||||
|
||||
//获取设备分辨率
|
||||
getWindowSize() {
|
||||
return { width: screen.width, height: screen.height };
|
||||
}
|
||||
|
||||
//显示游戏圈
|
||||
show_gameClub(leftRatio, topRatio, widthRatio, heightRatio) {}
|
||||
//隐藏游戏圈
|
||||
hide_gameClub() {}
|
||||
|
||||
//检查是否支持base64音频播放
|
||||
checkSupportBase64Audio() {
|
||||
return true;
|
||||
}
|
||||
//播放base64音频
|
||||
private _audioInst: HTMLAudioElement = null;
|
||||
playBase64Audio(base64: string, loop: boolean) {
|
||||
let substring = base64;
|
||||
let qianzhui = "data:audio/x-wav;base64,";
|
||||
if (base64.startsWith(qianzhui)) {
|
||||
substring = base64.substring(qianzhui.length, base64.length);
|
||||
}
|
||||
|
||||
//region 登录
|
||||
login(cb: Function = null) {
|
||||
cb && cb({ platform:2, code: null });
|
||||
// 解码 Base64 字符串为二进制数据
|
||||
const binaryData = atob(substring);
|
||||
|
||||
// 创建一个包含二进制数据的 Uint8Array
|
||||
const byteArray = new Uint8Array(binaryData.length);
|
||||
for (let i = 0; i < binaryData.length; i++) {
|
||||
byteArray[i] = binaryData.charCodeAt(i);
|
||||
}
|
||||
|
||||
//显示视频广告
|
||||
show_video(callback:Function, tag:number) {
|
||||
callback && callback({ code: 0, tag: tag });
|
||||
SDKManager.video_ad_back();
|
||||
// 创建 Blob 对象,指定 MIME 类型为音频格式(例如 mp3)
|
||||
const audioBlob = new Blob([byteArray], { type: "audio/mp3" });
|
||||
|
||||
// 创建音频 URL
|
||||
const audioUrl = URL.createObjectURL(audioBlob);
|
||||
|
||||
console.log("web 播放base64音频", audioUrl);
|
||||
// 创建音频元素并播放
|
||||
if (this._audioInst == null) {
|
||||
this._audioInst = new Audio(audioUrl);
|
||||
} else {
|
||||
this._audioInst.src = audioUrl;
|
||||
}
|
||||
this._audioInst.play();
|
||||
}
|
||||
|
||||
//客服功能是否支持
|
||||
kefuSupport() {
|
||||
console.log("web 不支持联系客服");
|
||||
return false;
|
||||
}
|
||||
//进入联系客服
|
||||
openKefu() {
|
||||
console.log("web 进入联系客服");
|
||||
}
|
||||
|
||||
//region 播放主背景视频
|
||||
private zhuVideo1: BgVideo | null = null;
|
||||
private zhuExtra1: any = null;
|
||||
playBgAudio(
|
||||
remoteUrl: string,
|
||||
vtype: VideoRoleType,
|
||||
loop: boolean = false,
|
||||
extra: any = {}
|
||||
) {
|
||||
let bgvideo = SceneBgVideoLayer.handle;
|
||||
if (!bgvideo) {
|
||||
return;
|
||||
}
|
||||
|
||||
//显示插屏
|
||||
show_splash() {
|
||||
|
||||
|
||||
this.initBgAudio();
|
||||
if (this.zhuVideo1 && this.zhuVideo1.isPlaying) {
|
||||
this.playBgAudioNext(remoteUrl, vtype, loop, extra);
|
||||
return;
|
||||
}
|
||||
|
||||
//显示Banner
|
||||
show_banner(...args) {
|
||||
|
||||
if (!this.zhuVideo1) {
|
||||
this.zhuVideo1 = bgvideo.getVideoClone();
|
||||
}
|
||||
this.zhuExtra1 = extra;
|
||||
this.zhuVideo1.vtype = vtype;
|
||||
this.zhuVideo1.cbReady = this.audioReady.bind(this);
|
||||
this.zhuVideo1.cbEnd = this.audioEnded.bind(this);
|
||||
this.zhuVideo1.playVideo(remoteUrl, loop, false);
|
||||
}
|
||||
initBgAudio() {
|
||||
let bgvideo = SceneBgVideoLayer.handle;
|
||||
if (!bgvideo) {
|
||||
return;
|
||||
}
|
||||
|
||||
//隐藏Banner
|
||||
hide_banner(...args) {
|
||||
console.log("web 初始化主背景视频");
|
||||
if (!this.zhuVideo1) {
|
||||
this.zhuVideo1 = bgvideo.getVideoClone();
|
||||
this.zhuVideo1.remoteUrl =
|
||||
"http://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/bginited.mp4";
|
||||
}
|
||||
if (!this.zhuVideo2) {
|
||||
this.zhuVideo2 = bgvideo.getVideoClone();
|
||||
this.zhuVideo2.remoteUrl =
|
||||
"http://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/bginited.mp4";
|
||||
}
|
||||
if (!this.emoVideo1) {
|
||||
this.emoVideo1 = bgvideo.getVideoClone();
|
||||
this.emoVideo1.remoteUrl =
|
||||
"http://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/bginited.mp4";
|
||||
}
|
||||
if (!this.emoVideo2) {
|
||||
this.emoVideo2 = bgvideo.getVideoClone();
|
||||
this.emoVideo2.remoteUrl =
|
||||
"http://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/bginited.mp4";
|
||||
}
|
||||
}
|
||||
audioReady() {
|
||||
this.removeBgAudioNext();
|
||||
this.zhuVideo1.moveIn();
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_Ready, {
|
||||
compo: this.zhuVideo1,
|
||||
extra: this.zhuExtra1,
|
||||
});
|
||||
}
|
||||
audioEnded() {
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_End, {
|
||||
compo: this.zhuVideo1,
|
||||
extra: this.zhuExtra1,
|
||||
});
|
||||
}
|
||||
removeBgAudio() {
|
||||
if (this.zhuVideo1 && this.zhuVideo1.isPlaying) {
|
||||
this.zhuVideo1.recycleVideo();
|
||||
}
|
||||
}
|
||||
//主背景临时视频
|
||||
private zhuVideo2: BgVideo | null = null;
|
||||
private zhuExtra2: any = null;
|
||||
playBgAudioNext(
|
||||
remoteUrl: string,
|
||||
vtype: VideoRoleType,
|
||||
loop: boolean = false,
|
||||
extra: any = {}
|
||||
) {
|
||||
let bgvideo = SceneBgVideoLayer.handle;
|
||||
if (!bgvideo) {
|
||||
return;
|
||||
}
|
||||
this.removeBgAudioNext();
|
||||
if (!this.zhuVideo2) {
|
||||
this.zhuVideo2 = bgvideo.getVideoClone();
|
||||
}
|
||||
this.zhuExtra2 = extra;
|
||||
this.zhuVideo2.vtype = vtype;
|
||||
this.zhuVideo2.cbReady = this.audioNextReady.bind(this);
|
||||
this.zhuVideo2.cbEnd = this.audioNextEnded.bind(this);
|
||||
this.zhuVideo2.playVideo(remoteUrl, loop, false);
|
||||
}
|
||||
audioNextReady() {
|
||||
this.removeBgAudio();
|
||||
this.zhuVideo2.moveIn();
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_Ready, {
|
||||
compo: this.zhuVideo2,
|
||||
extra: this.zhuExtra2,
|
||||
});
|
||||
}
|
||||
audioNextEnded() {
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_End, {
|
||||
compo: this.zhuVideo2,
|
||||
extra: this.zhuExtra2,
|
||||
});
|
||||
}
|
||||
removeBgAudioNext() {
|
||||
if (this.zhuVideo2 && this.zhuVideo2.isPlaying) {
|
||||
this.zhuVideo2.recycleVideo();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//主动拉起分享
|
||||
show_share(rewardCB?:Function) {
|
||||
rewardCB && rewardCB();
|
||||
}
|
||||
|
||||
//获取设备分辨率
|
||||
getWindowSize() {
|
||||
return {width:screen.width, height: screen.height};
|
||||
}
|
||||
|
||||
//显示游戏圈
|
||||
show_gameClub(leftRatio, topRatio, widthRatio, heightRatio) {
|
||||
|
||||
}
|
||||
//隐藏游戏圈
|
||||
hide_gameClub() {
|
||||
|
||||
}
|
||||
|
||||
//检查是否支持base64音频播放
|
||||
checkSupportBase64Audio() {
|
||||
return true;
|
||||
}
|
||||
//播放base64音频
|
||||
private _audioInst:HTMLAudioElement = null;
|
||||
playBase64Audio(base64:string, loop:boolean) {
|
||||
let substring = base64;
|
||||
let qianzhui = "data:audio/x-wav;base64,"
|
||||
if(base64.startsWith(qianzhui)) {
|
||||
substring = base64.substring(qianzhui.length, base64.length)
|
||||
}
|
||||
|
||||
// 解码 Base64 字符串为二进制数据
|
||||
const binaryData = atob(substring);
|
||||
|
||||
// 创建一个包含二进制数据的 Uint8Array
|
||||
const byteArray = new Uint8Array(binaryData.length);
|
||||
for (let i = 0; i < binaryData.length; i++) {
|
||||
byteArray[i] = binaryData.charCodeAt(i);
|
||||
}
|
||||
|
||||
// 创建 Blob 对象,指定 MIME 类型为音频格式(例如 mp3)
|
||||
const audioBlob = new Blob([byteArray], { type: 'audio/mp3' });
|
||||
|
||||
// 创建音频 URL
|
||||
const audioUrl = URL.createObjectURL(audioBlob);
|
||||
|
||||
console.log("web 播放base64音频", audioUrl)
|
||||
// 创建音频元素并播放
|
||||
if (this._audioInst == null) {
|
||||
this._audioInst = new Audio(audioUrl);
|
||||
} else {
|
||||
this._audioInst.src = audioUrl;
|
||||
}
|
||||
this._audioInst.play();
|
||||
|
||||
}
|
||||
|
||||
//客服功能是否支持
|
||||
kefuSupport() {
|
||||
console.log("web 不支持联系客服")
|
||||
return false;
|
||||
}
|
||||
//进入联系客服
|
||||
openKefu() {
|
||||
console.log("web 进入联系客服")
|
||||
}
|
||||
|
||||
|
||||
//region 播放主背景视频
|
||||
private zhuVideo1: BgVideo | null = null;
|
||||
private zhuExtra1: any = null;
|
||||
playBgAudio(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) {
|
||||
let bgvideo = SceneBgVideoLayer.handle
|
||||
if (!bgvideo) {
|
||||
return
|
||||
}
|
||||
|
||||
this.initBgAudio()
|
||||
if (this.zhuVideo1 && this.zhuVideo1.isPlaying) {
|
||||
this.playBgAudioNext(remoteUrl, vtype, loop, extra);
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.zhuVideo1) {
|
||||
this.zhuVideo1 = bgvideo.getVideoClone();
|
||||
}
|
||||
this.zhuExtra1 = extra;
|
||||
this.zhuVideo1.vtype = vtype;
|
||||
this.zhuVideo1.cbReady = this.audioReady.bind(this);
|
||||
this.zhuVideo1.cbEnd = this.audioEnded.bind(this);
|
||||
this.zhuVideo1.playVideo(remoteUrl, loop, false);
|
||||
}
|
||||
initBgAudio() {
|
||||
let bgvideo = SceneBgVideoLayer.handle
|
||||
if (!bgvideo) {
|
||||
return
|
||||
}
|
||||
|
||||
console.log("web 初始化主背景视频")
|
||||
if (!this.zhuVideo1) {
|
||||
this.zhuVideo1 = bgvideo.getVideoClone();
|
||||
this.zhuVideo1.remoteUrl = "http://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/bginited.mp4"
|
||||
}
|
||||
if (!this.zhuVideo2) {
|
||||
this.zhuVideo2 = bgvideo.getVideoClone();
|
||||
this.zhuVideo2.remoteUrl = "http://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/bginited.mp4"
|
||||
}
|
||||
if (!this.emoVideo1) {
|
||||
this.emoVideo1 = bgvideo.getVideoClone();
|
||||
this.emoVideo1.remoteUrl = "http://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/bginited.mp4"
|
||||
}
|
||||
if (!this.emoVideo2) {
|
||||
this.emoVideo2 = bgvideo.getVideoClone();
|
||||
this.emoVideo2.remoteUrl = "http://hxzgame.vip.hnhxzkj.com/lzx/XiangQin/bginited.mp4"
|
||||
}
|
||||
}
|
||||
audioReady() {
|
||||
this.removeBgAudioNext();
|
||||
this.zhuVideo1.moveIn();
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_Ready, {compo: this.zhuVideo1, extra: this.zhuExtra1});
|
||||
}
|
||||
audioEnded() {
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_End, {compo: this.zhuVideo1, extra: this.zhuExtra1});
|
||||
}
|
||||
removeBgAudio() {
|
||||
if (this.zhuVideo1 && this.zhuVideo1.isPlaying) {
|
||||
this.zhuVideo1.recycleVideo();
|
||||
}
|
||||
}
|
||||
//主背景临时视频
|
||||
private zhuVideo2: BgVideo | null = null;
|
||||
private zhuExtra2: any = null;
|
||||
playBgAudioNext(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) {
|
||||
let bgvideo = SceneBgVideoLayer.handle
|
||||
if (!bgvideo) {
|
||||
return
|
||||
}
|
||||
this.removeBgAudioNext();
|
||||
if (!this.zhuVideo2) {
|
||||
this.zhuVideo2 = bgvideo.getVideoClone();
|
||||
}
|
||||
this.zhuExtra2 = extra;
|
||||
this.zhuVideo2.vtype = vtype;
|
||||
this.zhuVideo2.cbReady = this.audioNextReady.bind(this);
|
||||
this.zhuVideo2.cbEnd = this.audioNextEnded.bind(this);
|
||||
this.zhuVideo2.playVideo(remoteUrl, loop, false);
|
||||
}
|
||||
audioNextReady() {
|
||||
this.removeBgAudio();
|
||||
this.zhuVideo2.moveIn();
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_Ready, {compo: this.zhuVideo2, extra: this.zhuExtra2});
|
||||
}
|
||||
audioNextEnded() {
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_End, {compo: this.zhuVideo2, extra: this.zhuExtra2});
|
||||
}
|
||||
removeBgAudioNext() {
|
||||
if (this.zhuVideo2 && this.zhuVideo2.isPlaying) {
|
||||
this.zhuVideo2.recycleVideo();
|
||||
}
|
||||
//region 播放emo视频
|
||||
private emoVideo1: BgVideo | null = null;
|
||||
private emoExtra1: any = {};
|
||||
addEmoAudio(
|
||||
remoteUrl: string,
|
||||
vtype: VideoRoleType,
|
||||
loop: boolean = false,
|
||||
extra: any = {}
|
||||
) {
|
||||
let bgvideo = SceneBgVideoLayer.handle;
|
||||
if (!bgvideo) {
|
||||
return;
|
||||
}
|
||||
|
||||
//region 播放emo视频
|
||||
private emoVideo1: BgVideo | null = null;
|
||||
private emoExtra1: any = {}
|
||||
addEmoAudio(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) {
|
||||
let bgvideo = SceneBgVideoLayer.handle
|
||||
if (!bgvideo) {
|
||||
return
|
||||
}
|
||||
|
||||
if (this.emoVideo1 && this.emoVideo1.isPlaying) {
|
||||
this.playEmoAudioNext(remoteUrl, vtype, loop, extra);
|
||||
return
|
||||
// this.emoVideo1.recycleVideo();
|
||||
}
|
||||
|
||||
if (!this.emoVideo1 || !isValid(this.emoVideo1.node)) {
|
||||
this.emoVideo1 = bgvideo.getVideoClone();
|
||||
}
|
||||
this.emoExtra1 = extra;
|
||||
this.emoVideo1.vtype = vtype;
|
||||
this.emoVideo1.cbReady = this.emoReady.bind(this);
|
||||
this.emoVideo1.cbEnd = this.emoEnded.bind(this);
|
||||
this.emoVideo1.playVideo(remoteUrl, loop, false);
|
||||
}
|
||||
emoReady() {
|
||||
this.removeEmoNextAudio();
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_Ready, {compo: this.emoVideo1, extra: this.emoExtra1});
|
||||
}
|
||||
emoEnded() {
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_End, {compo: this.emoVideo1, extra: this.emoExtra1});
|
||||
}
|
||||
removeEmoAudio() {
|
||||
if (this.emoVideo1 && this.emoVideo1.isPlaying) {
|
||||
this.emoVideo1.recycleVideo();
|
||||
}
|
||||
}
|
||||
// 播放emo临时视频
|
||||
private emoVideo2: BgVideo | null = null;
|
||||
private emoExtra2: any = {}
|
||||
playEmoAudioNext(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) {
|
||||
let bgvideo = SceneBgVideoLayer.handle
|
||||
if (!bgvideo) {
|
||||
return
|
||||
}
|
||||
this.removeEmoNextAudio();
|
||||
if (!this.emoVideo2) {
|
||||
this.emoVideo2 = bgvideo.getVideoClone();
|
||||
}
|
||||
this.emoExtra2 = extra;
|
||||
this.emoVideo2.vtype = vtype;
|
||||
this.emoVideo2.cbReady = this.emoNextReady.bind(this);
|
||||
this.emoVideo2.cbEnd = this.emoNextEnded.bind(this);
|
||||
this.emoVideo2.playVideo(remoteUrl, loop, false);
|
||||
}
|
||||
emoNextReady() {
|
||||
this.removeEmoAudio();
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_Ready, {compo: this.emoVideo2, extra: this.emoExtra2});
|
||||
}
|
||||
emoNextEnded() {
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_End, {compo: this.emoVideo2, extra: this.emoExtra2});
|
||||
}
|
||||
removeEmoNextAudio() {
|
||||
if (this.emoVideo2 && this.emoVideo2.isPlaying) {
|
||||
this.emoVideo2.recycleVideo();
|
||||
}
|
||||
if (this.emoVideo1 && this.emoVideo1.isPlaying) {
|
||||
this.playEmoAudioNext(remoteUrl, vtype, loop, extra);
|
||||
return;
|
||||
// this.emoVideo1.recycleVideo();
|
||||
}
|
||||
|
||||
if (!this.emoVideo1 || !isValid(this.emoVideo1.node)) {
|
||||
this.emoVideo1 = bgvideo.getVideoClone();
|
||||
}
|
||||
this.emoExtra1 = extra;
|
||||
this.emoVideo1.vtype = vtype;
|
||||
this.emoVideo1.cbReady = this.emoReady.bind(this);
|
||||
this.emoVideo1.cbEnd = this.emoEnded.bind(this);
|
||||
this.emoVideo1.playVideo(remoteUrl, loop, false);
|
||||
}
|
||||
emoReady() {
|
||||
this.removeEmoNextAudio();
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_Ready, {
|
||||
compo: this.emoVideo1,
|
||||
extra: this.emoExtra1,
|
||||
});
|
||||
}
|
||||
emoEnded() {
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_End, {
|
||||
compo: this.emoVideo1,
|
||||
extra: this.emoExtra1,
|
||||
});
|
||||
}
|
||||
removeEmoAudio() {
|
||||
if (this.emoVideo1 && this.emoVideo1.isPlaying) {
|
||||
this.emoVideo1.recycleVideo();
|
||||
}
|
||||
}
|
||||
// 播放emo临时视频
|
||||
private emoVideo2: BgVideo | null = null;
|
||||
private emoExtra2: any = {};
|
||||
playEmoAudioNext(
|
||||
remoteUrl: string,
|
||||
vtype: VideoRoleType,
|
||||
loop: boolean = false,
|
||||
extra: any = {}
|
||||
) {
|
||||
let bgvideo = SceneBgVideoLayer.handle;
|
||||
if (!bgvideo) {
|
||||
return;
|
||||
}
|
||||
this.removeEmoNextAudio();
|
||||
if (!this.emoVideo2) {
|
||||
this.emoVideo2 = bgvideo.getVideoClone();
|
||||
}
|
||||
this.emoExtra2 = extra;
|
||||
this.emoVideo2.vtype = vtype;
|
||||
this.emoVideo2.cbReady = this.emoNextReady.bind(this);
|
||||
this.emoVideo2.cbEnd = this.emoNextEnded.bind(this);
|
||||
this.emoVideo2.playVideo(remoteUrl, loop, false);
|
||||
}
|
||||
emoNextReady() {
|
||||
this.removeEmoAudio();
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_Ready, {
|
||||
compo: this.emoVideo2,
|
||||
extra: this.emoExtra2,
|
||||
});
|
||||
}
|
||||
emoNextEnded() {
|
||||
Utils.sendInnerMsg(InnerMsgCode.BgVideo_End, {
|
||||
compo: this.emoVideo2,
|
||||
extra: this.emoExtra2,
|
||||
});
|
||||
}
|
||||
removeEmoNextAudio() {
|
||||
if (this.emoVideo2 && this.emoVideo2.isPlaying) {
|
||||
this.emoVideo2.recycleVideo();
|
||||
}
|
||||
}
|
||||
|
||||
//region 友盟+
|
||||
umaInit() {
|
||||
//region 复制到剪贴板
|
||||
/**复制文本到剪贴板 */
|
||||
copyToClipboard(text: string, cb?: Function) {
|
||||
console.log("web 复制到剪贴板:", text);
|
||||
|
||||
if (navigator.clipboard && window.isSecureContext) {
|
||||
// 使用现代的 Clipboard API
|
||||
navigator.clipboard
|
||||
.writeText(text)
|
||||
.then(() => {
|
||||
console.log("web 复制成功 (Clipboard API)");
|
||||
cb && cb(true);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("web 复制失败 (Clipboard API):", err);
|
||||
this.fallbackCopyToClipboard(text, cb);
|
||||
});
|
||||
} else {
|
||||
// 使用兼容性方案
|
||||
this.fallbackCopyToClipboard(text, cb);
|
||||
}
|
||||
//友盟统计是否开启
|
||||
umaSwt() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**兼容性复制方案 */
|
||||
private fallbackCopyToClipboard(text: string, cb?: Function) {
|
||||
const textArea = document.createElement("textarea");
|
||||
textArea.value = text;
|
||||
|
||||
// 避免滚动到底部
|
||||
textArea.style.top = "0";
|
||||
textArea.style.left = "0";
|
||||
textArea.style.position = "fixed";
|
||||
textArea.style.opacity = "0";
|
||||
|
||||
document.body.appendChild(textArea);
|
||||
textArea.focus();
|
||||
textArea.select();
|
||||
|
||||
try {
|
||||
const successful = document.execCommand("copy");
|
||||
if (successful) {
|
||||
console.log("web 复制成功 (fallback)");
|
||||
cb && cb(true);
|
||||
} else {
|
||||
console.log("web 复制失败 (fallback)");
|
||||
cb && cb(false);
|
||||
}
|
||||
} catch (err) {
|
||||
console.log("web 复制异常 (fallback):", err);
|
||||
cb && cb(false);
|
||||
}
|
||||
//友盟事件统计
|
||||
umaEvent(eventName: string, value: any = {}) {
|
||||
}
|
||||
|
||||
document.body.removeChild(textArea);
|
||||
}
|
||||
|
||||
//region 友盟+
|
||||
umaInit() {}
|
||||
//友盟统计是否开启
|
||||
umaSwt() {
|
||||
return false;
|
||||
}
|
||||
//友盟事件统计
|
||||
umaEvent(eventName: string, value: any = {}) {}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user