| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1007 人关注过本帖
标题:Mp3播放器★歌词同步显示★3.0
取消只看楼主 加入收藏
me4405801
Rank: 2
等 级:论坛游民
帖 子:37
专家分:17
注 册:2006-8-31
结帖率:100%
收藏
 问题点数:0 回复次数:0 
Mp3播放器★歌词同步显示★3.0

感谢您使用本程序
本程序需要您安装Windows Media Player 9以上版本!!
本程序在Win98/2k/XP & VB6.0环境下测试通过。
主要功能:
1.使用播放列表连续播放歌曲;
2.播放歌曲时同步显示歌词;(LRC歌词文件除后缀必须和歌曲文件同名,而且在同一目录下!)
3.实现文件的拖放操作。

本程序全部由小弟个人编写,多有不足之处,还望高人不吝赐教。

程序中的问题全部写在Form1代码的最底端!

2.0更新信息:
1.改进用户接口(界面);
2.改进读取歌词文件的算法;
3.实现磁性窗口。

3.0更新信息:
1.实现同步滚动显示歌词,并动态改变滚动速度;
2.添加气球提示;
3.添加了歌词秀的显示模式;
4.修正了磁性窗体的某些BUG。

下载地址:
http://pickup.mofile.com/2488506978356145
http://www.esnips.com/doc/0d2f9300-9476-474e-a2a3-16d5a136e99c/Mp3播放器★歌词同步显示★3.0

我这个程序中可是有“复活节彩旦”的呦,换句话说就是程序中有些“小秘密”,不研究一下代码可是发现

不了的!(提示下:在编辑歌词框架的“保存”按钮中—:)

设计札记:
一、关于timer控件
起初我设计动态滚动歌词的算法时,思路是利用一个Timer控件,将它的interval设为100,这样它就每

秒发生10次。再建立一个变量tv,在timer事件中执行P1(Pictruebox).CurrentY=P1.CurrentY-tv,再根据

歌词文件来改变tv,从而通过改变tv来控制歌词的滚动速度。
然而,当我调试的时候却发现,程序的运行结果总是不近如人意。经过我漫长而有仔细的排查,终于发

现:理论上我的算法是没有错误的,但是实际上,也许是由于VB本身的原因,interval设为100的timer事件

在一秒中的发生次数根本没有10次。而且我发现,这种timer的发生频率的误差和2个因素有关:一是

interval的大小,interval越大,误差越小,interval越小,误差越大;另外误差还和计算机的配置有关,

配置越好,误差越小,反之误差越大。
而我起初的算法对timer事件发生频率的精确度有很高要求,而解决这个问题有2种方案:一是再建立一

个interval相同的Timer控件用来专门计算timer事件的确切发生频率;否则就要改变动态滚动歌词的算法。

最终,我选择了后者。现在的算法和interval无关,也就不存在误差的问题了。
以上是鄙人在设计程序时的一丝拙见,还望高人不吝赐教!
二、关于磁性窗体
当我在网上发布2.0版本时,有人提出磁性窗体在主窗体移动时有BUG,当时我怎么调试也没发现。然而

,就在我此次准备发布3.0版本时,终于发现了BUG。
让我万万没有想到的是:BUG竟然是由于一个“拖动时显示窗口内容”的系统选项的设置不同而引起的

。(Win2k和WinXP中在“显示属性”的“效果”选项卡中,Win98在“文件夹选项”的“查看”选项卡中)
这个选项将会影响WindowProc。如果没有勾选“拖动时显示窗口内容”,则从您拖动窗口按下鼠标开始

,到完成拖动松开鼠标为止,系统只会向WindowProc发送一次WM_MOVE消息;但如果勾选了“拖动时显示窗

口内容”,则从您拖动窗口按下鼠标开始,每移动一下鼠标,系统就会向WindowProc发送一次WM_MOVE消息

,直到您松开鼠标。
如此一来,原来磁性窗体的算法就会出现严重BUG,所以我在此次3.0版本中修正了该BUG。不过不知道

为什么,有些地方还是不够理想,还望高手不吝赐教!:-)

搜索更多相关主题的帖子: Mp3 歌词 播放器 
2007-08-20 09:27
快速回复:Mp3播放器★歌词同步显示★3.0
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023924 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved