vb6,使用WindowsMediaPlayer控件来编写实现重复播放的功能:窗体中有一个list1控件,在wmp控件载入音频的后,用户对音频进行一些操作,比如拖动进度条,暂停,停止,继续播放等。现在设置两个变量:begintime 和 endtime,分别记录重复播放的开始时间和结束时间。每一对对应的begintime和endtime为一组时间表,记录在list1控件里面。list控件的每一个item就是不同的时间表。现在需要实现的是:
用户载入音频,开始播放时、暂停后继续播放时、拖动进度条完毕之后,这三个点作为begintime
在按暂停的时候那个点为endtime。然后把begintime和endtime记录到list1里面。说得形象一点就是:
1、用户载入一个音频,记下begintime为00:00,用户在01:21的时候按暂停。暂停时记下endtime为01:21.程序就在list1中添加一个item为00:00-01:21的项。2、播放音频时按下了暂停,然后又点了继续播放,继续播放的时间点就作为begintime,直到用户按下暂停才作为endtime。程序记下begintime和endtime,然后添加到list1的新项中。3、用户播放音频时,拖动进度条,不管是往前还是往后。在拖动完毕的那个时间点作为begintime。直到用户按下暂停,那个点作为endtime。程序记下begintime和endtime,然后添加到list1的新项中。共以上三种情况。
然后,还要在用户双击list1里面任意一项时,就播放那一项对应的时间段,也就是从begintime到endtime的时间。好了,说完了。感觉说的好复杂。
请问怎样实现这个功能?不一定要给出代码。提示一下思路也可以。
谢谢咯
我q317911684
用户载入音频,开始播放时、暂停后继续播放时、拖动进度条完毕之后,这三个点作为begintime
在按暂停的时候那个点为endtime。然后把begintime和endtime记录到list1里面。说得形象一点就是:
1、用户载入一个音频,记下begintime为00:00,用户在01:21的时候按暂停。暂停时记下endtime为01:21.程序就在list1中添加一个item为00:00-01:21的项。2、播放音频时按下了暂停,然后又点了继续播放,继续播放的时间点就作为begintime,直到用户按下暂停才作为endtime。程序记下begintime和endtime,然后添加到list1的新项中。3、用户播放音频时,拖动进度条,不管是往前还是往后。在拖动完毕的那个时间点作为begintime。直到用户按下暂停,那个点作为endtime。程序记下begintime和endtime,然后添加到list1的新项中。共以上三种情况。
然后,还要在用户双击list1里面任意一项时,就播放那一项对应的时间段,也就是从begintime到endtime的时间。好了,说完了。感觉说的好复杂。
请问怎样实现这个功能?不一定要给出代码。提示一下思路也可以。
谢谢咯
我q317911684
解决方案 »
- 最简单的问题,如何连接数据库
- 怎么实现在combo中选择地区名而另一个combo中出现对应城市的功能??
- 关于动态连接库的问题
- vb怎么来读取汉字,并把它输出?
- 怎樣可以使一個文件如TXT文件不能被隨便刪除,
- 哪里有WINAMP的源代码下载
- Execl表格问题!
- 请教高手,如何在断线时候用vb保存浏览器中的图像?
- 用jet 4.0,并把ADODC控件的cursorlation属性设为aduserserver,则datagrid控件中不显示内容,也没提示错误。这些用jet 3.51全部正常,我是百思不解,请高高手。
- 有谁能把歌词写入MP3文件中,在播放时又能取出来???
- vb 如何判断是第一次回车 还是第二次回车
- image click事件加上这一句代码后反映速度会出问题?
暂停按钮_Click() 中记录 endtime 并输出2. 播放按钮_Click() 中记录 begintime,
暂停按钮_Click() 中记录 endtime 并输出2. WindowsMediaPlayer1_PositionChange() 中记录 begintime = TimeSerial(0,0,newPosition),
暂停按钮_Click() 中记录 endtime 并输出
我是这样写的:
======================================================
通用申明
Dim ostate As Integer '不断的记录播放状态,o表示旧状态
Dim nstate As Integer '不断的记录播放状体,n表示新状态然后用了一个timer1
Private Sub Timer1_Timer() '播放状态:1=停止,2=暂停,3=播放
ostate = nstate = 0 '0是未定义
nstate = WindowsMediaPlayer1.playState
If nstate <> ostate Then
If nstate = 2 Then
endtime = WindowsMediaPlayer1.Controls.currentPositionString
If begintime <> endtime Then
List1.AddItem begintime & " - " & endtime
End If
End If
If nstate = 3 Then
begintime = WindowsMediaPlayer1.Controls.currentPositionString
End If
End If
End Sub
我的理解是,用一个timer和两个变量来检查播放状态是否改变。每隔10ms检查一次。每隔10ms就把nstate的值传递给ostate,然后nstate赋予新值。然后再来判断nstate和ostate是否相同。若不同,则播放状态改变。
然后在wmp的另外个事件里面
Private Sub WindowsMediaPlayer1_PositionChange(ByVal oldPosition As Double, ByVal newPosition As Double)
begintime = newPosition
End Sub
不管往前拖动还是往后拖动,拖动后的位置就是新位置。这样有个问题。
用WindowsMediaPlayer1.Controls.currentPositionString获得的时间是00:00(00分00秒)的格式
PositionChange里面newPosition得到的时间值是0.00000000秒的格式。
请问该怎样转换?
WMP的按钮动作好像没有事件吧?
那些事件的名称代表什么我都不知道呢。
Private endtime As StringPrivate Sub Form_Load()
WindowsMediaPlayer1.URL = "C:\WINDOWS\Media\Windows XP ニッ.wav"
End SubPrivate Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
Select Case NewState
Case wmppsPlaying
begintime = WindowsMediaPlayer1.Controls.currentPositionString
If LenB(begintime) = 0 Then
begintime = "00:00"
End If
Case wmppsPaused
endtime = WindowsMediaPlayer1.Controls.currentPositionString
List1.AddItem begintime & "-" & endtime
End Select
End Sub
所以我改了下,是这样
通用申明
Dim ostate As Integer '²»¶ÏµÄ¼Ç¼²¥·Å״̬
Dim nstate As Integer '²»¶ÏµÄ¼Ç¼²¥·Å×´Ìå
Private Sub Timer1_Timer() '²¥·Å״̬£º1=Í£Ö¹£¬2=ÔÝÍ££¬3=²¥·Å
ostate = nstate
nstate = WindowsMediaPlayer1.playState
If (ostate = 2) And (nstate = 3) Then
begintime = WindowsMediaPlayer1.Controls.currentPositionString
End If
Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long)
Select Case NewState
Case wmppsPlaying
begintime = WindowsMediaPlayer1.Controls.currentPositionString
If LenB(begintime) = 0 Then
begintime = "00:00"
End If
Case wmppsPaused
endtime = WindowsMediaPlayer1.Controls.currentPositionString
List1.AddItem begintime & "-" & endtime
listchange = True
End Select
End Sub
Private Sub WindowsMediaPlayer1_PositionChange(ByVal oldPosition As Double, ByVal newPosition As Double)
begintime = TimeSerial(0, 0, newPosition)
End Sub
End Sub