我智商爆棚
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

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)
}
}
});
}
}
}