123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- /**
- * @author uu
- * @file 通用页面控制器和适配
- */
- var AC = require('action')
- const ADSdk = require("ADSdk")
- cc.Class({
- extends: cc.Component,
- properties: {
- status: 0, //页面状态
- pages: [cc.Node],
- },
- // 0 开始游戏页面
- // 1 游戏页面
- // 2 helpUI页面
- // 3 过关页面
- // 4 失败页面
- // 5 复活页面
- // 6 排行榜页面
- start() {
- this.splash = this.node.getChildByName("splash");
- this.splash.active = false;
- this.splashIsOver = false; //闪屏已经执行 才可播放信息流
- this.lateStart()
- // TODO 广告 开屏
- if (AppConst.SHOWADUI) {
- if (AppConst.CHANNEL == AppConst.channel.ANDROID) {
- // 手Q没有关闭监听
- ADSdk.pay(9, this);
- } else {
- // this.showSplash();
- }
- }
- },
- lateStart() {
- this.width = cc.director.getWinSizeInPixels().width
- window.width = this.width
- this.height = cc.director.getWinSizeInPixels().height
- window.height = this.height
- // 存为全局变量
- this.adoptCanvas()
- },
- // 适配解决方案
- adoptCanvas() {
- let canvas = cc.director.getScene().getChildByName('Canvas').getComponent(cc.Canvas)
- // 设计分辨率比
- let rateR = canvas.designResolution.height / canvas.designResolution.width;
- // 显示分辨率比
- let rateV = this.height / this.width;
- if (rateV > rateR) {
- canvas.fitHeight = false;
- canvas.fitWidth = true;
- } else {
- canvas.fitHeight = true;
- canvas.fitWidth = false;
- }
- },
- showSplash() {
- // if(this.isRuningFade) return;
- // this.splash.runAction(
- // cc.sequence(
- // cc.callFunc(() => {
- // this.isRuningFade = true;
- // }),
- // cc.delayTime(1),
- // cc.fadeOut(1.0),
- // cc.callFunc(() => {
- // this.splashIsOver = true;
- // if (AppConst.CHANNEL == AppConst.channel.ANDROID) {
- this.splashIsOver = true;
- this.showNativeAD(0);
- // }
- // })
- // ));
- },
- onOpenPage(num, callFun) {
- this.closeAllPages()
- this.pages[num].active = true
- // if (callFun) {
- // this.callFun();
- // }
- this.showNativeAD(num);
- },
- addPage(num, callFun) {
- this.pages[num].scale = 0.5
- this.pages[num].active = true
- this.pages[num].runAction(AC.popOut(0.5))
- // if (callFun) {
- // this.callFun();
- // }
- this.showNativeAD(num);
- },
- openPageTarget(target) {
- target.scale = 0.5
- target.active = true
- target.runAction(AC.popOut(0.5))
- },
- removePage(num, callFun) {
- this.pages[num].runAction(cc.sequence(AC.popIn(0.5), cc.callFunc(() => {
- this.pages[num].active = false
- }, this)))
- // if (callFun) {
- // this.callFun();
- // }
- },
- onButtonOpenPage(event, cust) {
- this.onOpenPage(cust);
- },
- onButtonAddPage(event, cust) {
- this.addPage(cust);
- },
- onButtonRemovePage(event, cust) {
- this.removePage(cust);
- },
- closeAllPages() {
- this.pages.forEach(element => {
- element.active = false
- });
- },
- showNativeAD(id) {
- // TODO 先关闭原生广告
- // TODO 广告 原生广告/插屏广告
- let num = Utils.randomNum(0, 100);
- let nativeAD = AppConst.probabilityConfig.nativeAD;
- let time = 0;
- switch (id) {
- case 0:// 主界面
- if (num < nativeAD.mainUI.probability) {
- if (AppConst.SHOWADUI) {
- // cc.log("信息流")
- if (AppConst.CHANNEL == AppConst.channel.ANDROID) {
- if (this.splashIsOver) {
- time = nativeAD.mainUI.delayTime;
- this.scheduleOnce(() => {
- ADSdk.pay(5, this);
- }, time);
- }
- } else {
- ADSdk.showInsertAd();
- }
- }
- }
- break;
- case 5:// 复活界面
- if (num < nativeAD.gameFailUI.probability) {
- if (AppConst.SHOWADUI) {
- if (AppConst.CHANNEL == AppConst.channel.ANDROID) {
- time = nativeAD.gameFailUI.delayTime;
- this.scheduleOnce(() => {
- ADSdk.pay(7, this);
- }, time);
- } else {
- ADSdk.showInsertAd();
- }
- }
- }
- break;
- case 1:// 游戏界面
- // TODO 广告 banner
- // 玩家主动关闭40s后再次展示
- // 玩家未主动关闭30S自动销毁,再同步调用展示其他广告
- if (AppConst.SHOWADUI) {
- if (AppConst.CHANNEL == AppConst.channel.ANDROID) {
- // 手Q没有关闭监听
- ADSdk.pay(0, this);
- } else {
- ADSdk.showBanner();
- // this.scheduleOnce(() => {
- // ADSdk.hideBanner();
- // this.showBanner();
- // }, 30);
- }
- }
- break;
- case 3:// 过关界面
- if (num < nativeAD.gameSucessUI.probability) {
- if (AppConst.SHOWADUI) {
- if (AppConst.CHANNEL == AppConst.channel.ANDROID) {
- time = nativeAD.gameSucessUI.delayTime;
- this.scheduleOnce(() => {
- ADSdk.pay(11, this);
- }, time);
- } else {
- ADSdk.showInsertAd();
- }
- }
- }
- break;
- }
- },
- // 原生UI
- showNativeAdUI(id) {
- },
- });
|