366 lines
10 KiB
JavaScript
366 lines
10 KiB
JavaScript
// Learn cc.Class:
|
|
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/class.html
|
|
// - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/class.html
|
|
// Learn Attribute:
|
|
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html
|
|
// - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/reference/attributes.html
|
|
// Learn life-cycle callbacks:
|
|
// - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html
|
|
// - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/life-cycle-callbacks.html
|
|
|
|
module.exports = {
|
|
//extends: cc.Component,
|
|
|
|
properties: {
|
|
// foo: {
|
|
// // ATTRIBUTES:
|
|
// default: null, // The default value will be used only when the component attaching
|
|
// // to a node for the first time
|
|
// type: cc.SpriteFrame, // optional, default is typeof default
|
|
// serializable: true, // optional, default is true
|
|
// },
|
|
// bar: {
|
|
// get () {
|
|
// return this._bar;
|
|
// },
|
|
// set (value) {
|
|
// this._bar = value;
|
|
// }
|
|
// },
|
|
|
|
},
|
|
|
|
// LIFE-CYCLE CALLBACKS:
|
|
|
|
// onLoad () {},
|
|
|
|
|
|
|
|
__createAD: function(adtype, adunitid, bannerY, canvasH, owner){
|
|
let obj = owner;
|
|
if(!owner){
|
|
obj = {
|
|
adType: adtype,
|
|
adUnitId: adunitid,
|
|
state: 0
|
|
};
|
|
}
|
|
switch(this.channelid){
|
|
case 6001:
|
|
{
|
|
if(adtype == 0){
|
|
let realy = this.winH / 2 - bannerY / canvasH * this.winH - 80 / 2;
|
|
if(!obj.style){
|
|
obj.style = {
|
|
left: 0,
|
|
top: realy,
|
|
width: this.winW,
|
|
height: 80,
|
|
//realWidth: nc.width,
|
|
//realHeight: nc.height
|
|
};
|
|
}
|
|
let data = {
|
|
adUnitId: adunitid,
|
|
style: obj.style
|
|
};
|
|
if(wx && wx.createBannerAd){
|
|
let ad = wx.createBannerAd(data);
|
|
obj.ad = ad;
|
|
}
|
|
/*
|
|
ad.onResize(res => {
|
|
console.log("[bannerad]onResize:" + res.width + "," + res.height);
|
|
console.log("[bannerad]style:" + JSON.stringify(ad));
|
|
});
|
|
*/
|
|
}else if(adtype == 1){
|
|
let data = {
|
|
adUnitId: adunitid
|
|
};
|
|
if(wx && wx.createRewardedVideoAd){
|
|
let ad = wx.createRewardedVideoAd(data);
|
|
obj.ad = ad;
|
|
}
|
|
}
|
|
}break;
|
|
case 6002:
|
|
{
|
|
if(adtype == 0){
|
|
let realy = this.winH / 2 - bannerY / canvasH * this.winH - 80 / 2;
|
|
if(!obj.style){
|
|
obj.style = {
|
|
x: 0,
|
|
y: realy
|
|
//realWidth: nc.width,
|
|
//realHeight: nc.height
|
|
};
|
|
}
|
|
let data = {
|
|
viewId: adunitid,
|
|
style: obj.style
|
|
};
|
|
if(BK && BK.Advertisement && BK.Advertisement.createBannerAd){
|
|
let ad = BK.Advertisement.createBannerAd(data);
|
|
obj.ad = ad;
|
|
}
|
|
}else if(adtype == 1){
|
|
if(BK && BK.Advertisement && BK.Advertisement.createVideoAd){
|
|
let ad = BK.Advertisement.createVideoAd();
|
|
obj.ad = ad;
|
|
}
|
|
}
|
|
}break;
|
|
}
|
|
return obj;
|
|
},
|
|
|
|
init(channelid, gameid, isoffical, owner){
|
|
this.owner = owner;
|
|
this.gameid = gameid;
|
|
this.channelid = channelid;
|
|
this.BannerAds = [];
|
|
this.VideoAds = [];
|
|
this.cleanBannerAD();
|
|
this.cleanVideoAD();
|
|
},
|
|
|
|
setAccountID(accountid, sessionid){
|
|
this.accountid = accountid;
|
|
this.sessionid = sessionid;
|
|
},
|
|
|
|
setNickName(nickname){
|
|
this.nickname = nickname;
|
|
},
|
|
|
|
setFromAppID(appid){
|
|
this.fromid = appid;
|
|
},
|
|
|
|
setLocalUUID(uuid){
|
|
this.localid = uuid;
|
|
},
|
|
|
|
setSystemInfo(info){
|
|
this.winW = info.windowWidth;
|
|
this.winH = info.windowHeight;
|
|
},
|
|
|
|
|
|
addBannerAD(advid, identifier, bannerY, canvasH, rspCb){
|
|
var adobj = this.__createAD(0, advid, bannerY, canvasH);
|
|
if(adobj){
|
|
adobj.param = identifier;
|
|
adobj.rspCb = rspCb;
|
|
this.initAD(adobj);
|
|
this.BannerAds.push(adobj);
|
|
}
|
|
return ad;
|
|
},
|
|
|
|
|
|
addVideoAD(advid, identifier, rspCb){
|
|
var adobj = this.__createAD(1, advid);
|
|
if(adobj){
|
|
adobj.param = identifier;
|
|
adobj.rspCb = rspCb;
|
|
this.initAD(adobj);
|
|
this.VideoAds.push(adobj);
|
|
}
|
|
},
|
|
|
|
// update (dt) {},
|
|
|
|
reLoadBannerAD(identifier){
|
|
let obj = this.BannerAds.find((element) => {
|
|
return element.param == identifier;
|
|
})
|
|
|
|
if(obj && obj.ad && obj.style){
|
|
let id = obj.adUnitId;
|
|
this.destoryAD(obj.ad);
|
|
this.__createAD(0, id, 0, 0, obj);
|
|
}
|
|
return obj;
|
|
},
|
|
|
|
hasBannerAD(identifier){
|
|
let obj = this.findBannerAD(identifier);
|
|
if(obj && obj.ad){
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
|
|
hasVideoAD(identifier){
|
|
let obj = this.findVideoAD(identifier);
|
|
if(obj && obj.ad){
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
|
|
findBannerAD(identifier){
|
|
let obj = this.BannerAds.find((element) => {
|
|
return element.param == identifier;
|
|
})
|
|
return obj;
|
|
},
|
|
|
|
findVideoAD(identifier){
|
|
let obj = this.VideoAds.find((element) => {
|
|
return element.param == identifier;
|
|
})
|
|
return obj;
|
|
},
|
|
|
|
hideAllAD(){
|
|
this.BannerAds.forEach(element => {
|
|
this.hideAD(element);
|
|
});
|
|
},
|
|
|
|
|
|
switchBannerAD (identifier, bShow){
|
|
this.hideAllAD();
|
|
|
|
if(bShow){
|
|
let obj = reLoadBannerAD(identifier);
|
|
obj.needshow = true;
|
|
this.showAD(obj);
|
|
}
|
|
},
|
|
|
|
|
|
showRewardAD (identifier){
|
|
let obj = this.findVideoAD(identifier);
|
|
if(!obj || !obj.ad){
|
|
return;
|
|
}
|
|
obj.needshow = true;
|
|
this.loadAD(obj);
|
|
},
|
|
|
|
onLoadAD(obj){
|
|
console.log("[ad]onload");
|
|
obj.rspCb && obj.rspCb(100, obj);
|
|
if(obj.needshow){
|
|
this.showAD(obj);
|
|
}
|
|
},
|
|
|
|
onErrAD(errtype, err, obj){
|
|
console.log('[AD]err:' + errtype);
|
|
console.log(err);
|
|
obj.needshow = false;
|
|
obj.rspCb && obj.rspCb(errtype, obj, err);
|
|
},
|
|
|
|
destoryAD(ad){
|
|
if(!ad){
|
|
return;
|
|
}
|
|
ad.state = 30;
|
|
ad.destroy && ad.destroy();
|
|
},
|
|
|
|
showAD(obj){
|
|
let ad = obj.ad;
|
|
if(!ad){
|
|
return;
|
|
}
|
|
ad.state = 10;
|
|
ad.show && ad.show();
|
|
},
|
|
|
|
hideAD(obj){
|
|
let ad = obj.ad;
|
|
if(!ad){
|
|
return;
|
|
}
|
|
ad.state = 20;
|
|
ad.hide && ad.hide();
|
|
},
|
|
|
|
|
|
loadAD(obj){
|
|
let ad = obj.ad;
|
|
if(!ad){
|
|
return;
|
|
}
|
|
ad.state = 100;
|
|
switch(this.channelid){
|
|
case 6001:
|
|
{
|
|
ad.load && ad.load();
|
|
}break;
|
|
case 6002:{
|
|
this.onLoadAD(obj);
|
|
}break;
|
|
}
|
|
|
|
},
|
|
|
|
initAD(obj){
|
|
let ad = obj.ad;
|
|
if(!ad){
|
|
return;
|
|
}
|
|
ad.onLoad && ad.onLoad(() => {
|
|
console.log("[ad]onload");
|
|
this.onLoadAD(obj);
|
|
});
|
|
ad.onError && ad.onError(res => {
|
|
console.log("[ad]onerror:"+JSON.stringify(res));
|
|
this.onErrAD(-obj.state, res, obj);
|
|
});
|
|
switch(this.channelid){
|
|
case 6001:{
|
|
let closeCb = function(res){
|
|
console.log("[ad]onClose:"+JSON.stringify(res));
|
|
|
|
if (res && res.isEnded || res === undefined) {
|
|
|
|
obj.rspCb && obj.rspCb(10, obj, res, res.isEnded);
|
|
} else {
|
|
|
|
obj.rspCb && obj.rspCb(11, obj, res, false);
|
|
}
|
|
|
|
};
|
|
ad.onClose && ad.onClose(closeCb);
|
|
}break;
|
|
case 6002:{
|
|
let closeCb = function(res){
|
|
console.log("[ad]onClose:"+JSON.stringify(res));
|
|
obj.rspCb && obj.rspCb(11, obj, null, false);
|
|
// ad.offClose && ad.offClose(closeCb);
|
|
};
|
|
|
|
ad.onPlayFinish && ad.onPlayFinish(function () {
|
|
|
|
obj.rspCb && obj.rspCb(10, obj, null, true);
|
|
});
|
|
ad.onClose && ad.onClose(closeCb);
|
|
}break;
|
|
}
|
|
|
|
},
|
|
|
|
cleanBannerAD(){
|
|
if(this.BannerAds.length > 0){
|
|
this.BannerAds.forEach(element => {
|
|
this.destoryAD(element.ad);
|
|
});
|
|
this.BannerAds.length = 0;
|
|
}
|
|
},
|
|
|
|
cleanVideoAD(){
|
|
if(this.VideoAds.length > 0){
|
|
this.VideoAds.length = 0;
|
|
}
|
|
}
|
|
};
|