定时器,滑块条的使用
夜深人静的时候,我开始写代码了。咳咳 。 。 。 。 。 。
还是 继续做音乐播放器啊,把没完成的,剩下的,看看能写多少是多少吧,反正写几分钟就睡觉去了。
看完上一篇的之后,接下来我们开始写音乐播放的进度。可以想象一下音乐播放的进度是怎样实现的。
————————————————————————
看下图。
在 【_启动窗口】面板中,添加一个【时钟】控件,把控件拖动到如上图显示的位置。
然后选中时钟控件,在左边的事件列表框里面添加【周期事件】,如下图显示
然后添加周期事件,输入100,表示100毫秒刷新一次。
接下来,咱们开始实现音乐播放进度的代码
如上图显示,添加一个局部变量,(不知道如何添加的,传送门:如何添加局部变量)
变量名为:状态,
类型为:整数型
然后使用媒体播放器来获取状态。
当获取到的状态 等于 1 的时候,表示音乐播放器正在播放。
如果不等于1,则我们直接返回,不需要再执行下面的代码。
如音乐播放器正在播放,则我们需要更新播放的进度,通过媒体播放器获取到进度,然后设置到进度条里面去。
but,我们为什么还要 除以 1000 呢? 因为 除以1000,就可以把间隔的比例缩小一点,不至于进度条跳动的范围比较大哈。
还有就是这个函数是通过定时器来执行的,刚才我们把定时器的刷新时间设置为100毫秒。
so,每间隔100毫秒,定时器就会触发这个函数啦。
————————————————————————
接下来,我们写【上一曲】和【下一曲】的功能。
如上图,实现的是【上一曲】的功能。
首先添加一个变量【数值】用来存放当前歌曲列表的选中的索引(当前歌曲播放的搜索),
通过歌曲列表控件来获取当前选中的列表项,然后把该数值 – 1,表示选中状态往前移动一个位置,要注意的就是,列表框的索引是从 0 开始的,so,我们要判断, 该数值 – 1 之后是否会少于0, 如果少于 0 了表示已经超出列表框的范围,然后我们就可以直接执行 返回() 函数,不需要在执行下面的代码。
如果 -1 之后得到的数值 是有效的(大于等于0)则,我们先 停止(调用 _播放_被单击()函数就可以停止了) 然后选中 -1之后的这个索引的项,然后播放选中的项。(调用 _播放_被单击()函数就可以播放了)
【下一曲】 也是同样的道理,需要判断 +1 后的数值是否超出了 列表框的最大值的范围。
如下图:
简单的上一曲,下一曲的功能就简单地实现了。
BUT,这里面有一个BUG,那就是:如果歌曲没有正在播放的话,【上一曲】和【下一曲】的功能就无法使用,
SO,我们需要修改一下代码如下:
————————————————————————————————————————————————
添加的代码表示,如果媒体播放器当前没有播放的话,就不再需要执行停止的操作。 上面说过:媒体播放器.取状态() 如果 等于 1 的话 表示 正在播放。怎么不播放。
如果是正在播放的话,我们需要 执行一次 _播放_被单击() 然后停止播放,在执行新的播放
哇塞 好厉害啊