You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
481 lines
17 KiB
481 lines
17 KiB
import AppPlatform from "../../FrameWork/Util/AppPlatform";
|
|
import AppConfig from "../../FrameWork/Config/AppConfig";
|
|
import AppSwitchConfig from "../../FrameWork/Config/AppSwitchConfig";
|
|
import wudianMgr from "../../FrameWork/Mgr/WudianMgr";
|
|
import EventMgr from "../../FrameWork/Event/EventMgr";
|
|
import { ryw_Event } from "../../FrameWork/Event/EventEnum";
|
|
|
|
|
|
export class GameRecorder {
|
|
protected get recorder_custom() {
|
|
// if(null == this._recorder)
|
|
// {
|
|
// if(Laya.Browser.onMiniGame)
|
|
// {
|
|
// if (null != Laya.Browser.window["wx"].getGameRecorder
|
|
// && "function" == typeof (Laya.Browser.window["wx"].getGameRecorder))
|
|
// {
|
|
// this._recorder = Laya.Browser.window["wx"].getGameRecorder();
|
|
// if(null != this._recorder)
|
|
// {
|
|
// this._recorder.on('start', () => { console.log("开始录屏") });
|
|
// this._recorder.on('stop', (res) => { console.log("停止录屏 录屏长度:", res.duration) });
|
|
// this._recorder.on('pause', () => { console.log("暂停录屏") });
|
|
// this._recorder.on('resume', () => { console.log("继续录屏") });
|
|
// this._recorder.on('abort', () => { console.log("丢弃录屏") });
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// console.log("不支持微信录屏!");
|
|
// }
|
|
// }
|
|
// }
|
|
return this._recorder_custom;
|
|
}
|
|
protected _recorder_custom: any = null;
|
|
|
|
/**
|
|
* 开始录屏
|
|
*/
|
|
public start_custom() {
|
|
if (null != this.recorder_custom) {
|
|
this.recorder_custom.start();
|
|
}
|
|
}
|
|
/**
|
|
* 停止录屏
|
|
*/
|
|
public stop_custom() {
|
|
if (null != this.recorder_custom) {
|
|
this.recorder_custom.stop();
|
|
}
|
|
}
|
|
/**
|
|
* 暂停录屏
|
|
*/
|
|
public pause_custom() {
|
|
if (null != this.recorder_custom) {
|
|
this.recorder_custom.pause();
|
|
}
|
|
}
|
|
/**
|
|
* 从暂停状态恢复到录制状态
|
|
*/
|
|
public resume_custom() {
|
|
if (null != this.recorder_custom) {
|
|
this.recorder_custom.resume();
|
|
}
|
|
}
|
|
/**
|
|
* 舍弃录屏
|
|
*/
|
|
public abort_custom() {
|
|
if (null != this.recorder_custom) {
|
|
this.recorder_custom.abort();
|
|
}
|
|
}
|
|
/**
|
|
* 显示分享按钮
|
|
*/
|
|
public showShareBtn_custom() {
|
|
if (null != this.recorder_custom) {
|
|
let button = window["wx"].createGameRecorderShareButton({
|
|
// 样式参数
|
|
style: {
|
|
left: 10,
|
|
top: 150,
|
|
height: 50,
|
|
color: '#ffffff',
|
|
textAlign: 'center',
|
|
fontSize: 16,
|
|
borderRadius: 4,
|
|
iconMarginRight: 16,
|
|
paddingLeft: 1,
|
|
paddingRight: 30,
|
|
},
|
|
// 按钮的背景图片
|
|
image: 'button.jpg',
|
|
text: '自定义文案',
|
|
icon: 'icon.jpg',
|
|
// 分享参数
|
|
share: {
|
|
query: 'a=1&b=2',
|
|
// 背景音乐的路径
|
|
bgm: 'walkin.mp3',
|
|
timeRange: [[0, 1000], [2000, 3000]],
|
|
title: {
|
|
template: 'default.score',
|
|
data: {
|
|
score: 6500
|
|
}
|
|
},
|
|
button: {
|
|
template: 'default.enter',
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
export default class WXAPI {
|
|
|
|
|
|
public static readonly GameRecorder_custom = new GameRecorder();
|
|
|
|
public static wxLogin_custom(onSuccess: Function, onFail: Function) {
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
window["wx"].login(
|
|
{
|
|
success: (res) => {
|
|
if (res.code) {
|
|
let code = res.code;
|
|
console.log("登陆成功,获取到code : " + code)
|
|
onSuccess(code);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------激励视频---------------------------------
|
|
protected static _isRegRewardedVideoAdEvent_custom = false;
|
|
protected static _onRewardedVideoAdFailed_custom: Function = null;
|
|
protected static _onRewardedVideoAdClose_custom: Function = null;
|
|
protected static onRewardedVideoAdLoad_custom() {
|
|
console.log('激励视频 广告加载完成')
|
|
}
|
|
protected static onRewardedVideoAdError_custom(err) {
|
|
console.log('激励视频 广告加载失败' + err)
|
|
if (WXAPI._onRewardedVideoAdFailed_custom) {
|
|
WXAPI._onRewardedVideoAdFailed_custom();
|
|
EventMgr.emitEvent_custom(ryw_Event.startTimeTick)
|
|
}
|
|
}
|
|
protected static onRewardedVideoAdClose_custom(res) {
|
|
if ((res && res.isEnded) || res == null) {
|
|
console.log('激励视频 已完整观看')
|
|
if (WXAPI._onRewardedVideoAdClose_custom) {
|
|
WXAPI._onRewardedVideoAdClose_custom(true)
|
|
EventMgr.emitEvent_custom(ryw_Event.startTimeTick)
|
|
}
|
|
}
|
|
else {
|
|
console.log('激励视频 未完整观看')
|
|
if (WXAPI._onRewardedVideoAdClose_custom) {
|
|
WXAPI._onRewardedVideoAdClose_custom(false)
|
|
EventMgr.emitEvent_custom(ryw_Event.startTimeTick)
|
|
}
|
|
}
|
|
}
|
|
protected static regRewardedVideoAdEvent_custom(rewardedVideoAd) {
|
|
|
|
rewardedVideoAd.onLoad(WXAPI.onRewardedVideoAdLoad_custom)
|
|
rewardedVideoAd.onError(WXAPI.onRewardedVideoAdError_custom)
|
|
rewardedVideoAd.onClose(WXAPI.onRewardedVideoAdClose_custom)
|
|
|
|
WXAPI._isRegRewardedVideoAdEvent_custom = true;
|
|
}
|
|
public static showRewardedVideoAd_custom(onAdClose: Function, onFailed: Function, id?: string) {
|
|
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
WXAPI._onRewardedVideoAdClose_custom = onAdClose;
|
|
WXAPI._onRewardedVideoAdFailed_custom = onFailed;
|
|
|
|
// 中昱版本
|
|
// let videoids = [
|
|
// 'adunit-c7bd96dcbbb64965',
|
|
// 'adunit-6e934a1930991975',
|
|
// 'adunit-d68053701196d5ec'
|
|
// ]
|
|
// let index = Math.floor(Math.random() * videoids.length);
|
|
// if(index >= 3){
|
|
// index = 2;
|
|
// }
|
|
let videoId = 'adunit-c7bd96dcbbb64965';//videoids[index];//AppConfig.adUnitId_custom
|
|
id = 'adunit-c7bd96dcbbb64965';
|
|
// if (id) {
|
|
// videoId = id;
|
|
// }
|
|
|
|
// 嗨鹿版本
|
|
// let videoId = 'adunit-fbe06f21d4c53ec4'
|
|
|
|
console.log('videoId================0',videoId)
|
|
console.log('videoId================1',videoId)
|
|
let rewardedVideoAd = window["wx"].createRewardedVideoAd(
|
|
{
|
|
adUnitId: videoId,
|
|
}
|
|
);
|
|
|
|
if (!WXAPI._isRegRewardedVideoAdEvent_custom) {
|
|
WXAPI.regRewardedVideoAdEvent_custom(rewardedVideoAd);
|
|
}
|
|
|
|
rewardedVideoAd.load().then(() => {
|
|
let promise = rewardedVideoAd.show();
|
|
promise.then(() => console.log('激励视频 广告显示成功'));
|
|
promise.catch((err) => {
|
|
rewardedVideoAd.load()
|
|
.then(() => rewardedVideoAd.show())
|
|
.catch(err => {
|
|
console.log('激励视频 广告显示失败')
|
|
// if (onFailed) {
|
|
// onFailed();
|
|
// }
|
|
})
|
|
});
|
|
}).catch(err => {
|
|
console.log('激励视频 广告加载失败')
|
|
// if (onFailed) {
|
|
// onFailed();
|
|
// }
|
|
})
|
|
}
|
|
else {
|
|
onAdClose(true);
|
|
}
|
|
}
|
|
//----------------------------------------------------------------
|
|
|
|
|
|
//-------------------------小游戏跳转---------------------------
|
|
public static navigateToMiniProgram_custom(appId: string, path: string, onSuccess: Function, onFail: Function, onComplate: Function) {
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
console.log("跳转游戏: " + appId);
|
|
window["wx"].navigateToMiniProgram(
|
|
{
|
|
appId: appId,
|
|
path: path,
|
|
extraData: {
|
|
foo: 'bar'
|
|
},
|
|
envVersion: 'release',
|
|
success(res) {
|
|
if (onSuccess) {
|
|
onSuccess(res)
|
|
}
|
|
},
|
|
fail(res) {
|
|
if (onFail) {
|
|
onFail(res)
|
|
}
|
|
},
|
|
complete(res) {
|
|
if (onComplate) {
|
|
onComplate(res)
|
|
}
|
|
}
|
|
})
|
|
|
|
}
|
|
}
|
|
//----------------------------------------------------------------------
|
|
|
|
//---------------------分享----------------------------------------
|
|
protected static _onShow_custom: Function = null;
|
|
protected static _lastShareTime_custom: number = 0;
|
|
public static share_custom(complate: Function, titel: string, imageUrl: string) {
|
|
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
WXAPI._onShow_custom = () => {
|
|
window["wx"].offShow(WXAPI._onShow_custom)
|
|
WXAPI._onShow_custom = null;
|
|
var c = Date.now() - this._lastShareTime_custom;
|
|
if (complate) {
|
|
if (Date.now() - this._lastShareTime_custom > 2000) {
|
|
complate(true)
|
|
}
|
|
else {
|
|
complate(false)
|
|
}
|
|
}
|
|
}
|
|
window["wx"].onShow(WXAPI._onShow_custom)
|
|
this._lastShareTime_custom = Date.now();
|
|
window["wx"].shareAppMessage(
|
|
{
|
|
title: titel,
|
|
imageUrl: imageUrl
|
|
}
|
|
);
|
|
}
|
|
}
|
|
//----------------------------------------------------------------------
|
|
|
|
|
|
//--------------------插屏幕广告---------------------------------------
|
|
public static showInterstitialAd_custom(onAdClose: Function, onFailed: Function) {
|
|
|
|
return;
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
var interstitialAd = window["wx"].createInterstitialAd({
|
|
adUnitId: 'adunit-ceaa3ecd2361b779'//AppConfig.InsAdUnitId_custom,
|
|
})
|
|
|
|
interstitialAd.onLoad(() => {
|
|
console.log('插屏广告 加载完成');
|
|
interstitialAd.show().catch((err) => {
|
|
console.log('插屏广告 显示失败 :' + err)
|
|
if (onFailed) {
|
|
onFailed();
|
|
}
|
|
})
|
|
})
|
|
|
|
interstitialAd.onError((err) => {
|
|
console.log('插屏广告 加载失败' + err);
|
|
if (onFailed) {
|
|
onFailed();
|
|
}
|
|
})
|
|
|
|
interstitialAd.onClose(() => {
|
|
console.log('插屏广告 关闭');
|
|
if (onAdClose) {
|
|
onAdClose();
|
|
}
|
|
})
|
|
}
|
|
else {
|
|
onAdClose();
|
|
}
|
|
}
|
|
/**
|
|
* 得到小程序启动参数的同步方法,可得到一个Object返回值,返回值具体的数据结构在下面的列表中
|
|
* scene number 启动小游戏的场景值
|
|
* query Object 启动小游戏的 query 参数
|
|
* shareTicket string shareTicket,详见获取更多转发信息
|
|
* referrerInfo object 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 {}
|
|
* https://developers.weixin.qq.com/minigame/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html
|
|
* @static
|
|
* @returns {LaunchOptions}
|
|
* @memberof WXAPI
|
|
*/
|
|
public static getLaunchOptionsSync_custom() {
|
|
// let result = { scene: 0, query: null, shareTicket: "", referrerInfo: null };
|
|
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
let obj = window["wx"].getLaunchOptionsSync()
|
|
console.log("场景值 " + obj.scene);
|
|
let str = JSON.stringify(obj.query);
|
|
console.log("Query参数 " + str);
|
|
let key = obj.query["key"];
|
|
console.log("Query参数:key " + key);
|
|
console.log("ShareTicket " + obj.shareTicket);
|
|
console.log("ReferrerInfo.appId " + obj.referrerInfo.appId);
|
|
console.log("ReferrerInfo.extraData " + obj.referrerInfo.extraData);
|
|
return obj;
|
|
}
|
|
let obj = { scene: 1001, query: "", shareTicket: "", appId: "", extraData: "" }
|
|
return obj;
|
|
}
|
|
|
|
public static async wxOnShow_custom(){
|
|
/* 这里上报from */
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
window['wx'].onShow((args)=>{
|
|
let query = args.query;
|
|
let gdt_vid = query.gdt_vid;
|
|
let weixinadinfo = query.weixinadinfo
|
|
});
|
|
}
|
|
return null;
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
/**
|
|
* 打开微信左上角分享转发点击事件,在游戏逻辑中调用一次即可
|
|
* 注意此方法只会在真机上执行,在微信模拟器环境下点击转发按钮什么都不会发生
|
|
*
|
|
* @static
|
|
* @param {string} titel 分享标题
|
|
* @param {string} imageUrl 分享图片地址
|
|
* @param {Function} [success] 成功回调函数(可不填)
|
|
* @param {Function} [fail] 失败回调函数(可不填)
|
|
* @param {Function} [complate] 完成回调函数,成功失败都会执行(可不填)
|
|
* @memberof WXAPI
|
|
*/
|
|
public static SetShareMenu_custom(titel: string, imageUrl: string, success?: Function, fail?: Function, complate?: Function) {
|
|
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
console.log("小游戏设置转发按钮");
|
|
window["wx"].showShareMenu({
|
|
withShareTicket: false,
|
|
success: success,
|
|
fail: fail,
|
|
complete: complate
|
|
});
|
|
window["wx"].onShareAppMessage(function () {
|
|
return {
|
|
title: titel,
|
|
imageUrl: imageUrl
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
//检测更新
|
|
public static checkUpdate_custom() {
|
|
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
var updateManager = window["wx"].getUpdateManager()
|
|
updateManager.onCheckForUpdate(function (res) {
|
|
console.log("是否需要更新 : ", res.hasUpdate)
|
|
})
|
|
updateManager.onUpdateReady(function () {
|
|
window["wx"].showModal({
|
|
title: '更新提示',
|
|
content: '新版本已经准备好,是否重启小游戏?',
|
|
success: function (res) {
|
|
if (res.confirm) {
|
|
updateManager.applyUpdate()
|
|
}
|
|
}
|
|
})
|
|
})
|
|
updateManager.onUpdateFailed(function () {
|
|
console.log("新版本下载失败!!!")
|
|
})
|
|
}
|
|
}
|
|
|
|
protected static _crazyClickShowCounter_custom: number = 0;
|
|
|
|
//尝试打开微信狂点界面
|
|
public static tryShowWXCrazyClick_custom(): boolean {
|
|
if (!wudianMgr.wudianFlag_custom || 1 != AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().wxcfg_custom.kuangdianBanner_custom) {
|
|
return false;
|
|
}
|
|
let kuangdianLevelSpcacing = AppSwitchConfig.getInstance_custom().getAppSwitchData_custom().wxcfg_custom.kuangdianLevelSpcacing_custom;
|
|
if (kuangdianLevelSpcacing == 0) {
|
|
return true;
|
|
}
|
|
console.log(' WXAPI._crazyClickShowCounter_custom = ' + WXAPI._crazyClickShowCounter_custom + ' (kuangdianLevelSpcacing - 1) = ' + (kuangdianLevelSpcacing - 1));
|
|
if (WXAPI._crazyClickShowCounter_custom == (kuangdianLevelSpcacing - 1)) {
|
|
WXAPI._crazyClickShowCounter_custom = 0;
|
|
return true;
|
|
}
|
|
WXAPI._crazyClickShowCounter_custom++;
|
|
return false;
|
|
}
|
|
|
|
//检查是否已添加到我的小程序
|
|
public static checkIsAddedToMyMiniProgram(onSuccess: Function){
|
|
if (AppPlatform.is_WECHAT_GAME_custom()) {
|
|
window["wx"].checkIsAddedToMyMiniProgram({
|
|
success: res => {
|
|
console.log(res);
|
|
if(onSuccess){
|
|
onSuccess(res.added)
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|