2016-02-28 37 views
2

這是我無法工作的代碼片段。我試圖做的是讓Windows媒體播放器播放AVI,當它完成播放時,我想讓Windows媒體播放器變成「隱形」,直到下一次需要播放AVI。在隱藏媒體播放器之前,如何讓代碼等待AVI電影完成播放? Visual Basic 6

If brodyfile = 1 Then 'check character in file and play correct video. 

     WindowsMediaPlayer1.URL = (App.Path & "\brody1.avi") 'play video 

下面的這一行不起作用。我如何等待Windows媒體播放器在隱形之前完成播放avi?

 While WindowsMediaPlayer1.playState = wmppsPlaying ' This line never works 

     Sleep (500) 

     Wend 

     WindowsMediaPlayer1.uiMode = "invisible" ' This happens before AVI finishes playing. 

    Endif 

回答

2

不工作的原因是因爲視頻開始播放需要很短的時間。當它到達你的while語句時,視頻還沒有開始播放,所以它的PlayState不會是wmppsPlaying。

您不應該使用睡眠,因爲它會阻止UI的更新。最好使用定時器控制。

這是我的建議。計時器每秒檢查一次狀態,但也不會進行第一次檢查,因此視頻應該有時間開始。如果視頻是從需要很長時間加載的源加載的,則可能必須創建一個計時器來檢查視頻開始播放,然後再檢查視頻以停止播放。

Private Sub Command1_Click() 
    Me.WindowsMediaPlayer1.URL = (App.Path & "\brody1.avi") 

    Me.Timer1.Interval = 1000 
    Me.Timer1.Enabled = True 
End Sub 

Private Sub Timer1_Timer() 
    Dim videoIsPlaying As Boolean 

    videoIsPlaying = Me.WindowsMediaPlayer1.PlayState = wmppsPlaying 

    If Not videoIsPlaying Then 
     Me.Timer1.Enabled = False 
     'Hide it here 
    End If 

結束子