大家好,我是郭立员~,本文所讲内容仅供学习参考,请勿非法使用。
前言平时刷抖音或者看视频会在下方有一个进度条,能够知道当前视频播放的进度。
如果给脚本也加个进度条,就能知道脚本运行的运行情况,还有多久能运行完。
一、进度条效果
①、做一个细长的悬浮窗。
②、添加一个按钮控件。
③、给按钮控件设置一个和悬浮窗背景色不同的颜色。
FW.NewFWindow(
"浮窗名",
0,
700,
720,
3)
FW.AddButton(
"浮窗名",
"进度条",
"",
0,
0,
100,
3)
FW.SetBackColor(
"进度条",
"0000FF")
FW.Show(
"浮窗名")
Do Delay 1000Loop二、让进度条动起来
这里有两个思路,一是让进度条匀速增加,二是没完成一个功能进度条加一点。
(一)进度条匀速增加
既然是匀速增加,我们就要计算一下增加速度,假定屏幕宽度720像素,脚本运行一个循环是需要3分钟,那么每一秒增加4像素(720/180=4)。
那么可以做一个计次循环,循环次数为180次,每秒增加4像素,设置按钮的宽度增量为4像素/秒。
FW.NewFWindow(
"浮窗名",
0,
700,
720,
3)
FW.AddButton(
"浮窗名",
"进度条",
"",
0,
0,
100,
3)
FW.SetBackColor(
"进度条",
"0000FF")
FW.Show(
"浮窗名")
Do FW.SetWidth
"进度条",
0 Delay 1000 For i =
1 To
180 FW.SetWidth(
"进度条",i*
4)
Delay 1000 NextLoop上面的代码中很多数值都是固定值,这样不具有通用性,我们需要修改一下。
①、获取屏幕的宽度
Dim 屏幕宽度 = GetScreenX()TracePrint 屏幕宽度
②、获取脚本的运行时间
在脚本的最后一行,通常是循环结束的最后一行这个命令。
TracePrint
TickCount()
就可以知道脚本运行完需要的时间,然后把这个时间加入到进度条参数中。
③、进度条的增加速度
屏幕宽度 / 脚本运行时间 = 进度条的增加速度。
④、末尾补齐
进度条的增加速度是除法计算的结果,未必是一个整除的数值,所以在循环结束后加上一个进度条宽度等于屏幕宽度的操作,保证补齐。
Dim 屏幕高度 = GetScreenY()
Dim 屏幕宽度 = GetScreenX()
TracePrint 屏幕宽度
Dim 运行时间 =
10FW.NewFWindow(
"浮窗名",
0, 屏幕高度, 屏幕宽度,
3)
FW.AddButton(
"浮窗名",
"进度条",
"",
0,
0,
0,
3)
FW.SetBackColor(
"进度条",
"0000FF")
FW.Show(
"浮窗名")
Do FW.SetWidth
"进度条",
0 For i =
1 To 运行时间
FW.SetWidth(
"进度条",i*屏幕宽度/运行时间)
Delay 1000 Next FW.SetWidth
"进度条", 屏幕宽度
Loop这个方式是每一秒钟进度条的增加速度,如果脚本时间比较短,进度条看起来会有跳跃感,可以适当缩小循环中的延时,比如默认是Delay 1000
可以缩小10倍,变成Delay 100,相应的脚本时间*10,通过降低单次循环的耗时,增加循环次数,实现较小每次循环进度条的增加速度。
这么修改需要注意总耗时可能会比脚本运行时间长一点,这是因为修改悬浮窗按钮控件也是需要少量时间,随着循环次数扩大10倍,修改悬浮窗按钮控件的耗时也增加10倍,这个差值可能就变得明显了,可以微调每次循环的延迟使其平衡。
这种进度条匀速增加方式的缺点,进度条和脚本是独立运行的,所以需要单独给进度条增加一个线程,我们知道按键的多线程不算稳定,所以这个方式慎用。
(二)每运行一个步骤增加一次进度条
在脚本开始部分先开启悬浮窗展示。
Dim 屏幕高度 = GetScreenY()
Dim 屏幕宽度 = GetScreenX()
TracePrint 屏幕宽度
Dim 运行时间 =
100FW.NewFWindow(
"浮窗名",
0, 屏幕高度, 屏幕宽度,
3)
FW.AddButton(
"浮窗名",
"进度条",
"",
0,
0,
0,
3)
FW.SetBackColor(
"进度条",
"0000FF")
FW.Show (
"浮窗名")
每完成一个操作,进度条增加一段宽度,这个宽度由你总操作数觉得,比如有10个操作,那么每一段就是屏幕宽度除以10。
Dim 操作数 =
10Dim 当前操作 =
3FW.SetWidth(
"进度条",屏幕宽度/操作数*当前操作)
如果不能整除还是需要最后一步补齐进度条。
实际使用的时候,如果操作数比较多,数起来比较费劲,可以这样弄,在开始阶段,当前操作 =0,后续每多一个操作 当前操作 =当前操作+1。
最后输出一下当前操作,就知道有多少个操作步骤了。
Dim 操作数 =
10Dim 当前操作 =
0Dim 屏幕高度 =
GetScreenY()
Dim 屏幕宽度 =
GetScreenX()
TracePrint 屏幕宽度
Dim 运行时间 =
100FW.
NewFWindow(
"浮窗名",
0, 屏幕高度, 屏幕宽度,
3)
FW.
AddButton(
"浮窗名",
"进度条",
"",
0,
0,
0,
3)
FW.
SetBackColor(
"进度条",
"0000FF")
FW.Show (
"浮窗名")
//以下两行在每个操作结束后添加上当前操作 = 当前操作 +
1FW.
SetWidth(
"进度条",屏幕宽度/操作数*当前操作)
这种方式的缺点是进度条增加是跳跃性。
正文完=