万普插件库

jQuery插件大全与特效教程

[按键精灵]抖音上那种倒计时下播的效果是怎么做的?

大家好,我是郭立员~

前言

昨天刷抖音看到这么一个直播间,如图所示:

这是一个下播倒计时的直播间,通过和观众互动来增减下播的时间,看了一会儿,发现时间变动不是很灵敏,而且有观众说剩几秒就自动加,存在自动修改时间的可能性。

我们从程序的角度来说一下怎么实现这个倒计时的功能。

一、倒计时的常用写法

(1)For循环

For i = 10 To 1 Step -1
  ShowMessage i
  delay 1000
Next

(2)Do循环或者While循环

Dim n = 10
Do 
    ShowMessage n
    Delay 1000
    n = n - 1  
Loop Until n<0

如果是固定的倒计时,For循环或者Do循环其实都可以,但是对于可变倒计时,最好是用Do循环,因为For循环的计次变量i是固定值,循环过程中不可以修改。

二、可变倒计时写法

我以文本作为控制器,在文本中写入要增减的数字,然后控制倒计时的总时间。

Dim num = 50
Do
  Dim n = file.read("/sdcard/pictures/数字.txt")
  If Len(n) > 0 Then 
    num = num + n
    file.write("/sdcard/pictures/数字.txt")
  End If  
  showmessage num
  Delay 1000
  num = num - 1  
Loop Until num < 0

通过文本给倒计时的数字增减,这里需要注意一点,就是增减数字后要清空文本,防止反复增减同一个数字。

三、把倒计时数字转化为时间形式

时间形式是 00:00:00

三组数字用分号分开,分别代表时分秒,我们要把一个数字转换成这种形式。

Dim num = 1000
TracePrint secToTime(num)
Function secToTime(num)
  Dim hou = int(num / 3600)
  Dim min = int((num mod 3600) / 60)
  Dim sec = (num mod 3600) mod 60
  secToTime = right(0&hou,2)&":"&right(0&min,2)&":"&right(0&sec,2)
End Function

怎么把数字变成时间形式:

数字本身是秒数,比如代码中的1000代表1000秒,想要得到小时数,就是1000/3600,结果取整数,这里由于1000小于3600,所以结果取整后0。

分钟数的获取方法,在上一步 1000 除以3600,我们去结果的余数,这里余数是1000,之后1000除以60取整数,结果是16。

秒数是上一步的余数,也就是1000除以60的余数,是40。

这里稍微说一下余数,这是小学一二年级的除法计算,由于当时没有讲到小数知识点,所以引用了一个余数的概念。

比如 5除以2 ,现在我们知道结果是2.5,但是当时没有学习小数,那么5 ÷ 2 = 2 余 1 ,这里1就是余数,意思是5除以2,无法整除,在得到2以后,还剩余1。

说完余数,再说一格式补齐。

上面代码的输出结果是:

当前脚本第2行:00:16:40

在没有结果的地方补上0,保证每个部分都是两位数,这个使用的补位法:

一个数字无论是1位还是2位,在它前面加上一个0,然后在从最右位去2位数,就得到统一的2位数了。

比如 15 -> 补零 015 -> 右取2位 15

7 -> 补零 07 -> 右取2位 07

四、最终代码:

Dim num = 50
Do
  Dim n = file.read("/sdcard/pictures/数字.txt")
  If Len(n) > 0 Then 
    num = num + n
    file.write("/sdcard/pictures/数字.txt")
  End If  
  showmessage "距离下播时间:\n"&secToTime(num),1000,266,787
  Delay 1000
  num = num - 1  
Loop Until num < 0




Function secToTime(num)
  Dim hou = int(num / 3600)
  Dim min = int((num mod 3600) / 60)
  Dim sec = (num mod 3600) mod 60
  secToTime = right(0&hou,2)&":"&right(0&min,2)&":"&right(0&sec,2)
End Function

效果演示:

本文主要写倒计时的代码,控制器部分没有去讲,如果是和直播间联动,需要一个专门的脚本获取评论或者礼物,这个可以通过节点获取到,然后把结果转换为对应的增减数字传递给倒计时程序。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言