DavidLiu 发表于 2024-10-10 19:49

【求助】易语言进度条怎么表示真实进度?



我们在安装软件或者游戏的时候,别人总有一个进度条,如下图:




人家的进度条都是真实的!
比如:进度条有时候快,有时候慢,到100%的时候程序就会安装成功,并不是做摆设,瞎胡弄的


那么易语言自带的进度条控件能不能实现这个功能呢?
所以我就自己写了一个进度条,界面如下:


源码部分如下:


运行测试的时候,问题就出现了,简单来说就是——跟人家的不一样:

我的进度条是以一种奇怪的方式往前一跳一跳的,并不是缓慢前进,似乎也不是真实的进度

源码已打包上传,怎么才能做出表示真实的进度条呢?
当进度条走完,在弹窗“安装成功”,来个老师帮指点一下吧,可以直接在源码框架上边修改

源码链接:https://wwqk.lanzouq.com/iEzZk2c76k6j

蔡坤明 发表于 2024-10-10 19:49

在易语言中,要实现进度条表示真实进度,通常可以通过以下步骤进行:

创建进度条:在易语言的界面设计器中,添加一个进度条组件,可以通过“控件”菜单找到。

设置进度条的范围:设置进度条的最小值和最大值,一般最小值设为0,最大值设为100(或者根据实际需要设置)。

计算真实进度:在执行某个任务时,实时计算当前进度。你可以通过循环或任务完成的比例来计算当前进度。

更新进度条:在计算得到当前进度后,使用进度条的属性来更新其显示值。例如,使用 进度条.值 属性来设置当前进度。

下面是一个简单的示例代码:

易语言
// 假设这是一个长时间运行的任务,比如下载文件
进度条.最小值 = 0
进度条.最大值 = 100

// 模拟任务执行
循环 (i = 0; i <= 100; i = i + 1)
    // 更新进度条的值
    进度条.值 = i
   
    // 添加延时以模拟任务进行中的时间消耗
    等待(100)// 等待100毫秒
结束循环
在这个示例中,我们通过一个循环来模拟任务的进度,每次循环都会更新进度条的值,并添加一定的等待时间,以便用户能够看见进度条的变化。

确保在更新进度条时,UI线程可以正常更新,如果任务是耗时的,可以考虑使用多线程来避免界面卡顿。

POP 发表于 2024-10-10 20:57

搜精易教程,看mp3播放部分,对你有帮助

小白鼠 发表于 2024-10-10 22:38

当前进度÷总的×% 不就是进度了吗

retn 发表于 2024-10-12 08:47

直接上传源码
https://swdk.lanzouj.com/iZzzd2cckjhi

DavidLiu 发表于 2024-10-13 22:31

retn 发表于 2024-10-12 08:47
直接上传源码
https://swdk.lanzouj.com/iZzzd2cckjhi

谢谢大佬的源码,里边虽说少模块,但是大概也能看懂,我把您源码里关于进度条的核心代码贴了出来

这个进度条的真实性,得益于能算出百分比,也就是传输过程中知道已下载的大小,和,总的大小,进度条分成10000也是为了更细腻和准确。

但是我现在的问题是怎么样才能获取到一个函数的运行时间呢?这个时间可能会因为不同人的硬件以及网络环境都有所不同。
知道这些就对进度条的设计就很有帮助了

3楼的回复启发了我,也相对更具普遍性,积分奖励给3楼。我也有几个思路,也在那里一起回复

DavidLiu 发表于 2024-10-13 22:39

蔡坤明 发表于 2024-10-11 11:18
在易语言中,要实现进度条表示真实进度,通常可以通过以下步骤进行:

创建进度条:在易语言的界面设计器中 ...

感谢大佬指点,HB您拿去!

帖子里的例子我根据您说的思路,又重写了,基本上能实现真实的进度条了。

这里也有几个思路,可以用启动时间函数() 获取主要函数的运行时间,根据重要函数的数量,尽量去平衡分配进度条的位置。这是一种真实性

也可以设置标志位,当函数运行到某个指定位置,通过检测标志位知道函数的运行情况。

您提到的添加等待时间很重要,函数运行完和进度条走完不一样,这也就启发我最后的收尾程序,可以让卡在99%(好多程序最后卡99%然后在安装成功应该也是这个原理)

最后根据某个函数标志,检测后弹窗“安装成功”这样基本上就完美了


蔡坤明 发表于 2024-10-21 11:36

不客气的
页: [1]
查看完整版本: 【求助】易语言进度条怎么表示真实进度?