- 帖子
- 7
- 积分
- 19
- 技术
- 0
- 捐助
- 0
- 注册时间
- 2012-10-30
|
74楼
发表于 2013-2-2 20:55
| 只看该作者
看得出来,楼主是很用心写这段代码的!楼主的界面其实做的很好了,值得学习,仔细看了一下楼主的代码,了解了一下播放的机制,其实就是用主批处理生成一些需要显示和current_playing 使用的信息,然后调用 current_playing 进行播放,播放其实就是使用wmplayer.EXE 播放
我在看楼主的对播放歌曲进行同步的时候发现了会造成CPU浪费的情况,这是美中不足的地方,其使用的同步延时程序段如下
:delayed
set delay1=%1&&set /a delay2=%delay1%
set /a delay=!delay1!-!delay2!
set TotalTime=0
set NowTime=!time!
:_delay
set /a minute1=1!NowTime:~3,2!-100
set /a second1=1!NowTime:~-5,2!!NowTime:~-2!0-100000
set NowTime=!time!
set /a minute2=1!NowTime:~3,2!-100
set /a second2=1!NowTime:~-5,2!!NowTime:~-2!0-100000
set /a TotalTime+=(minute2-minute1+60)%%60*60000+second2-second1
if !TotalTime! lss !delay! goto _delay
goto :eof
主要意思就是取当前时间和处理过的歌曲长度进行对比,从而判断一首歌是否放完(然后taskkill wmplayer,再从列表里取下一首歌曲,如此往复)
在播放歌曲时候就不断的跑上边的程序段,不断的赋值!注意,是不断的,不是相隔多少毫秒,或者1秒然后进行判断歌曲是否应该已经放完了,所而是以最高的处理速度赋值,比较赋值比较赋值比较……CPU,呃,就浪费了,说到底,就是想说,在_delay里边加如 PING 来进行适当的延迟就可以解决CPU浪费的问题了。 |
|