游戏开发---主界面的视频奖励

游戏开发—主界面的视频奖励

引擎: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;
                }
            }
        }     
    },

向上面的这个逻辑肯能会有点绕对于新手来讲,不过没关系静下心来仔细看看不难!
另外重点看的是思路而不是死代码。

后期我会持续更新一些小游戏中常遇到的问题和思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值