TrackBarGadget bei Movies steuern [gelöst]
Verfasst: 28.11.2016 13:57
Hallo zusammen.
Kann mir bitte jemand sagen wie ich beim Abspielen eines Movies die Trackbar automatisch aktualisieren kann, und zwar ohne dass ich die Maus im Fenster bewegen muss?
Hier mal mein kleiner Versuch:
Kann mir bitte jemand sagen wie ich beim Abspielen eines Movies die Trackbar automatisch aktualisieren kann, und zwar ohne dass ich die Maus im Fenster bewegen muss?
Hier mal mein kleiner Versuch:
Code: Alles auswählen
EnableExplicit
If Not InitMovie()
MessageRequester("Fehler","Kann Movie Bibliothek nicht öffnen",#MB_ICONERROR)
End
EndIf
Enumeration
#moviewin
#moviectrl
EndEnumeration
Enumeration
#startstop01
#speedup
#tracbar
#movie
EndEnumeration
Global FileName.s
Global width.i, height.i, movielen.i, SlowmoThread.i, RunMovThread.i, position.q, speedpos.q
Global event.i, EventWin.i
OpenWindow(#moviewin,100,140,640,480,"Movie")
OpenWindow(#moviectrl,100,10,640,90,"Movie Control")
ButtonGadget(#startstop01,3,3,150,30,"Start/Stop",#PB_Button_Toggle)
ButtonGadget(#speedup,160,3,150,30,"Slowmo",#PB_Button_Toggle)
TrackBarGadget(#tracbar,3,70,300,20,1,100)
Procedure tracbar(speedpos)
SetGadgetState(#tracbar,speedpos)
EndProcedure
Procedure playmov(value.i)
If value = 0 ;start Movie
PlayMovie(#movie,WindowID(#moviewin))
ElseIf value = 1 ;Pause movie
PauseMovie(#movie)
ElseIf value = 2 ;restart movie
ResumeMovie(#movie)
EndIf
EndProcedure
Procedure speedup(speedpos.i) ;Thread
Repeat
speedpos + 1
MovieSeek(#movie,speedpos)
playmov(2)
playmov(1)
Delay(200)
;tracbar(speedpos) ;Das geht so nicht !?
SetWindowTitle(#moviectrl,"Movie Position: " + Str(speedpos)) ;Das geht aber schon !
ForEver
EndProcedure
FileName = OpenFileRequester("Movie","","Videodateien|*.avi;*.mpg;*.mkv|Alle Dateien|*.*",0)
If FileName <> ""
If LoadMovie(#movie,FileName) = 0
MessageRequester("Fehler","Konnte Videodatei nicht öffnen",#MB_ICONERROR)
End
Else
width = MovieWidth(#movie)
height = MovieHeight(#movie)
movielen = MovieLength(#movie)
SetGadgetAttribute(#tracbar,#PB_TrackBar_Maximum,movielen)
ResizeWindow(#moviewin,#PB_Ignore,#PB_Ignore,width,height)
playmov(0)
Repeat
event = WaitWindowEvent()
EventWin = EventWindow()
If EventWin = #moviectrl
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #startstop01
If GetGadgetState(#startstop01) = 1
position = MovieStatus(#movie)
playmov(1)
SetWindowTitle(#moviewin,"Movie " + Str(position))
DisableGadget(#speedup,1)
Else
SetWindowTitle(#moviewin,"Movie ")
playmov(2)
DisableGadget(#speedup,0)
EndIf
Case #speedup
If GetGadgetState(#speedup) = 1
speedpos = MovieStatus(#movie)
playmov(1)
SlowmoThread = CreateThread(@speedup(),speedpos)
If IsThread(SlowmoThread)
DisableGadget(#startstop01,1)
EndIf
Else
If IsThread(SlowmoThread)
KillThread(SlowmoThread)
DisableGadget(#startstop01,0)
EndIf
playmov(2)
EndIf
Case #tracbar
If GetGadgetState(#startstop01) = 1
speedpos = GetGadgetState(#tracbar)
MovieSeek(#movie,speedpos)
playmov(2)
playmov(1)
SetGadgetState(#tracbar,speedpos)
EndIf
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
EndIf
ForEver
StopMovie(#movie)
FreeMovie(#movie)
EndIf
EndIf
End