冒险游戏源码 cocoscreator 开发ts
这是一款物理引擎益智休闲小游戏
体验链接:Cocos Creator | fox adventure
收集钥匙开启通关大门
代码
const {ccclass, property} = cc._decorator;
@ccclass
export class XslSdkCtrl extends rich.BaseCtrl{
private static _sInstance: XslSdkCtrl = null;
_reviewVer: string = "1.0.16";
_adSwitch: number = 0;
_validAd: number = 0;
_disFunc: any = null;
_hasShowNum_exit: number = 0; //退出按钮已经展示次数
_hasShowNum_bannerMove: number = 0; //banner位移已经展示次数
_hasShowNum_bannerInit: number = 0; //banner刷新次数
_hasShowNum_levelPullDrawer: number = 0; //关卡界面拉抽屉次数
_hasShowNum_randomJump: number = 0; //大图随机跳转次数
_hasShowNum_nextLevelVideo: number = 0; //下一关视频次数
_hasShowNum_box: number = 0; //宝箱次数
_hasShowNum_gamePullDrawer: number = 0; //进入游戏拉取抽屉次数
_hasShowNum_enterGameVideo: number = 0; //进入游戏拉取视频广告次数
_hasShowNum_showLevel0: number = 0; //进入第0关次数
/**
* @description: 获取一个全局唯一单例
* @return:
*/
static getInstance(): XslSdkCtrl {
if (this._sInstance == null) {
this._sInstance = new XslSdkCtrl();
rich["xslSdkCtrl"] = this._sInstance;
}
return this._sInstance;
}
initCtrl() {
rich.BaseCtrl.prototype.initCtrl.call(this);
}
/**
* 请求后台开关
*/
httpGet() {
let self = this;
if (cc.sys.platform == cc.sys.WECHAT_GAME) {
let launchOption = wx.getLaunchOptionsSync();
let scene = launchOption.scene;
let channel = launchOption.query["channel"];
let request = cc.loader.getXMLHttpRequest();
let url = "https://wxa.639311.com/api/ban?scene="+scene+"&reviewVer="+this._reviewVer+"&channel="+channel;
request.open("GET", url, true);
request.onreadystatechange = function () {
if (request.readyState == 4 && (request.status >= 200 && request.status < 400)) {
let response = JSON.parse(request.responseText);
console.log("response ==============", response);
self._adSwitch = response.data.adSwitch;
self._validAd = response.data.validAd;
self._disFunc = response.data.disFunc;
}
}
request.send();
}
}
/**
* 获取退出胶囊开关
*/
getExitStatus() {
if (this._disFunc) {
let data = this._disFunc[1];
if (data && data.name == "退出") {
if (data.status == 1) {
// 是否超过次数
if (this._hasShowNum_exit >= Number(data.show_num)) {
return false;
}
// 根据概率展示
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_exit++;
return true;
}
}
}
}
return false;
}
/**
* 获取banner位移开关
*/
getBannerMoveStatus() {
if (this._disFunc) {
console.log("11111111111", this._disFunc);
let data = this._disFunc[2];
console.log("获取banner位移开关 ", data, data.name);
if (data && data.name == "banner位移") {
if (data.status == 1) {
// 是否超过次数
if (this._hasShowNum_bannerMove >= Number(data.show_num)) {
console.log("显示次数 ===== ", this._hasShowNum_bannerMove, data.show_num);
return false;
}
// 根据概率展示
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
console.log("根据概率展示 ", randomNum, data.show_per);
this._hasShowNum_bannerMove++;
return true;
}
}
}
}
return false;
}
/**
* 获取banner刷新开关
*/
getBannerInitStatus() {
if (this._disFunc) {
let data = this._disFunc[3];
if (data && data.name == "banner刷新") {
if (data.status == 1) {
// 是否超过次数
if (this._hasShowNum_bannerInit >= Number(data.show_num)) {
return false;
}
// 根据概率展示
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_bannerInit++;
return true;
}
}
}
}
return false;
}
/**
* 进入关卡拉抽屉
*/
getLevelPullDrawer() {
if (this._disFunc) {
let data = this._disFunc[4];
if (data && data.name == "进入关卡拉抽屉") {
if (data.status == 1) {
// 是否超过次数
if (this._hasShowNum_levelPullDrawer >= Number(data.show_num)) {
return false;
}
// 根据概率展示
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_levelPullDrawer++;
return true;
}
}
}
}
return false;
}
/**
* 大图随机跳转
*/
getRandomJump() {
if (this._disFunc) {
let data = this._disFunc[5];
if (data && data.name == "大图随机跳转") {
// 是否超过次数
if (this._hasShowNum_randomJump >= Number(data.show_num)) {
return false;
}
// 根据概率展示
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_randomJump++;
return true;
}
}
}
return false;
}
/**
* 下一关视频
*/
getNextLevelVideo() {
if (this._disFunc) {
let data = this._disFunc[6];
if (data && data.name == "下一关视频") {
// 是否超过次数
if (this._hasShowNum_nextLevelVideo >= Number(data.show_num)) {
return false;
}
// 根据概率展示
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_nextLevelVideo++;
return true;
}
}
}
return false;
}
/**
* 显示宝箱
*/
getShowBox() {
if (this._disFunc) {
let data = this._disFunc[7];
if (data && data.name == "宝箱") {
// 是否超过次数
if (this._hasShowNum_box >= Number(data.show_num)) {
return false;
}
// 根据概率展示
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_box++;
return true;
}
}
}
return false;
}
/**
* 进入关卡拉抽屉
*/
getGamePullDrawer() {
if (this._disFunc) {
let data = this._disFunc[8];
if (data && data.name == "进入游戏抽屉") {
if (data.status == 1) {
// 是否超过次数
if (this._hasShowNum_gamePullDrawer >= Number(data.show_num)) {
return false;
}
// 根据概率展示
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_gamePullDrawer++;
return true;
}
}
}
}
return false;
}
getEnterGameVideo() {
if (this._disFunc) {
let data = this._disFunc[9];
if (data && data.name == "进入游戏视频") {
if (data.status == 1) {
// 是否超过次数
if (this._hasShowNum_enterGameVideo >= Number(data.show_num)) {
return false;
}
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_enterGameVideo++;
return true;
}
}
}
}
return false;
}
getShowLevel0() {
if (this._disFunc) {
let data = this._disFunc[10];
if (data && data.name == "第0关") {
if (data.status == 1) {
// 是否超过次数
if (this._hasShowNum_showLevel0 >= Number(data.show_num)) {
return false;
}
let randomNum = Math.random();
if (randomNum <= Number(data.show_per)) {
this._hasShowNum_showLevel0++;
return true;
}
}
}
}
return false;
}
}
export enum UIIndex{
BG = 0,//背景所在层级
MUTEX,//互斥层 同时只会存在一个节点 比如切换到大厅就会把登录界面移除
UI,//正常ui层级
PopUp,//弹窗层级
}
export class UIMgr {
public static _sInstance:UIMgr=null;
constructor() {
console.log("初始化UI管理类");
}
/**
* @description: 获取一个全局唯一的ui管理单例
* @return:
*/
public static getInstance():UIMgr{
if(this._sInstance==null){
this._sInstance = new UIMgr();
}
return this._sInstance;
}
/**
* 添加ui到对应的层级上
* @param uiName ui名称
* @param uiIndex ui层级
* @param uiParam 初始化参数
* @param uiPos 初始化坐标
* @param callback 添加成功回调
*/
public addUI(uiName:string,uiIndex:number,uiParam?:any,uiPos?:cc.Vec2,callback?:Function):void
{
uiIndex = uiIndex || UIIndex.UI;
let uiPath = UI.UI_PATH[uiName];
let scene = cc.director.getScene();
if(!uiPath){
console.log("UI不存在=====",uiName);
}else{
let node = scene.getChildByName("node_idx"+uiIndex);
if(!node){
node = new cc.Node();
let widget = node.addComponent(cc.Widget);
widget.isAlignBottom = true;
widget.isAlignLeft = true;
widget.isAlignRight = true;
widget.isAlignTop = true;
widget.top = 0;
widget.left = 0;
widget.right = 0;
widget.bottom = 0;
node.name = "node_idx"+uiIndex;
node.parent = scene;
node.zIndex = uiIndex;
}
switch(uiIndex){
case UIIndex.BG:
rich.prefabManager.addPrefabToNode(node,uiPath,callback,UI.UI_NAME[uiName],uiParam,uiPos);
break;
case UIIndex.MUTEX:
node.destroyAllChildren();
rich.prefabManager.addPrefabToNode(node,uiPath,callback,UI.UI_NAME[uiName],uiParam,uiPos);
break;
case UIIndex.UI:
rich.prefabManager.addPrefabToNode(node,uiPath,callback,UI.UI_NAME[uiName],uiParam,uiPos);
break;
case UIIndex.PopUp:
rich.prefabManager.addPrefabToNode(node,uiPath,callback,UI.UI_NAME[uiName],uiParam,uiPos);
break;
default:
console.log("ui层级未定义",uiIndex);
break;
}
}
}
}
有兴趣联系邮箱 batchmichaelbxkxyj@gmail.com