游戏开发—主界面的视频奖励
引擎:cocosCreator > 语言:JS
往往一些小游戏的需要策划很多广告位,就是以何种形式在界面什么地方存在,点击后播放广告得到不同的奖励。
今天简介绍一下:如下图的视频奖励功能:左上为观看视频最大次数,下面为按钮的说明。
功能:点击后播放视频,3减1;然后下面文字变成倒计时状态,倒计时结束左上角数字+1;具体思路我们结合代码一起看!!!(这方方式即使退出游戏,时间照样给计算)
当然方法有很多中,我只是举例说明其中一种。
作为该按钮的一个回调,实现点击播放视频获得奖励和更新数字
videoReward: function(){
let counts = this.videoNumber.string - 1;//这便是左上角数字
if(counts < 0){ return; }
else{
//此处是展示视频完毕后的逻辑
this.videoNumber.string = counts; //更新一下左上角数字
cc.sys.localStorage.setItem("voideCounts",counts);//本地话存储,目的是为了在进入游戏中还能读取
if(counts == 2){
let date = new Date();
let clickTime = date.getTime();//获取一下当数组为最大值时,第一次点击的时间
cc.sys.localStorage.setItem("clickTime",clickTime.toString());//本地存储一下时间
}
//获取奖励逻辑就可以写在这里
}
},
接下来格式化显示倒计时,然后需要每帧去调用它
formatTime: function(dt){
//其实这就是一个效果当数字大于0的时候,变大变小提示玩家点击的效果,完全可以不用看。
if(this.videoNumber.string >0 && this.isEffect){//两个参数,左上角数字和动作效果间隔
let fun = cc.callFunc(function(){
this.isEffect = false;
},this);
let fun1 = cc.callFunc(function(){
this.isEffect = true;
},this);
this.node.runAction(cc.sequence(cc.scaleTo(0.1,1.3),cc.scaleTo(0.1,1),fun,cc.delayTime(3),fun1));
}
//这才是题目的逻辑
if(this.videoNumber.string >= 3){ return;}//满足条件直接跳出
let date = new Date();
let currentTime = date.getTime();//当前的时间和电脑上的时间同步,只不过距离1970年具体自己查的一个豪秒值
let clickTime = cc.sys.localStorage.getItem("clickTime");
let minutes = (Math.floor((this.intervalTime(代表间隔时间比如100秒)- (currentTime - clickTime) / 1000) / 60)).toString();// clickTime永远为当数字最大值时后的点击时间,所以this.intervalTime在下面有改变,否则倒计时时间第一次和第二次和第三次不同
let seconds = (Math.floor((this.intervalTime - (currentTime - clickTime) / 1000) % 60)).toString();
if(minutes >= 0 || seconds >= 0){
if(minutes.length <= 1){//为了格式化显示时间分和秒
minutes = "0" + minutes;
}
if(seconds.length <= 1){
seconds = "0" + seconds;
}
this.videoTime.string = minutes + ":" + seconds;
}
else{
if(this.videoNumber.string < 3){
this.videoNumber.string = Number(this.videoNumber.string) + 1;//倒计时结束一次后数字+1
if(this.videoNumber.string == 1){//数字值不同需要更新一下间隔时间
this.intervalTime = 10;//这里我为了测试将时间间隔设置为1
this.intervalTime *= 2;
}
else if(this.videoNumber.string == 2){
this.intervalTime = 10;
this.intervalTime *= 3;
}
cc.sys.localStorage.setItem("voideCounts",this.videoNumber.string);
if(this.videoNumber.string == 3){
this.videoTime.string = "视频奖励";
this.intervalTime = 10;
}
}
}
},
向上面的这个逻辑肯能会有点绕对于新手来讲,不过没关系静下心来仔细看看不难!
另外重点看的是思路而不是死代码。
后期我会持续更新一些小游戏中常遇到的问题和思路。