ReDraw-Probleme bei PlayMovie
Verfasst: 14.08.2005 21:19
Problem: Wenn man über ein laufendes Movie ein anderes Fenster zieht, dann wirkt das wie ein Radiergummi auf den Movie-Bereich. Bewegt man das Fenster mit dem Movie selbst, wird es wieder vervollständigt. Wie bekommt man einen korrekten Redraw nach Überlagerung hin? Oder liegt hier ein Fehler mit PlayMovie vor? Im Bsp. unten liegt das Movie auf einem Image-Gadget, was nicht dokumentiert ist.
Gadgets werden überlicherweise immer korrekt restauriert. Warum hier nicht? Gibt es ein Workaround? Vorschläge willkommen.
Gruß
Andi
Gadgets werden überlicherweise immer korrekt restauriert. Warum hier nicht? Gibt es ein Workaround? Vorschläge willkommen.
Gruß
Andi
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=1480&start=10&postdays=0&postorder=asc&highlight=
; Author: Danilo
; Date: 26. June 2003
;
; by Danilo, 26.06.2003 - german forum
;
FileName$ = OpenFileRequester("Open","","Movies - AVI,MPG|*.avi;*.mpg",1)
If FileName$
If InitMovie()
OpenWindow(1,200,200,300,300,#PB_WINDOW_SYSTEMMENU,"MoviePlay-Test")
CreateGadgetList(WindowID())
ImageGadget(2,5,5,300,290,0,#PB_Image_Border)
If LoadMovie(1,FileName$)=0
MessageRequester("ERROR","Cant load movie !",#MB_ICONERROR):End
EndIf
ResizeWindow(MovieWidth()+10,MovieHeight()+55)
ResizeGadget(2,5,5,MovieWidth(),MovieHeight())
Length = MovieLength()
FPS = MovieInfo(0) / 1000
MHeight = MovieHeight()
MWidth = MovieWidth()
TrackBarGadget(1,5,MHeight+10,MWidth-50,20,1,Length/FPS)
TextGadget(3,MWidth-45,MHeight+10,50,20,"0",#PB_Text_Right)
ButtonGadget(4,5,MHeight+35,60,20,"Pause")
ButtonGadget(5,70,MHeight+35,60,20,"Stop")
PlayMovie(1,GadgetID(2))
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow : End
Case #PB_Event_Gadget
Select EventGadgetID()
Case 1 ; Trackbar
;Debug EventType()
;If EventType()=-1
MovieSeek(GetGadgetState(1)*FPS)
;Beep_(800,10)
;EndIf
Case 4 ; Pause
If GetGadgetText(4)="Pause"
PauseMovie()
SetGadgetText(4,"Resume")
Else
ResumeMovie()
SetGadgetText(4,"Pause")
EndIf
Case 5 ; Stop
StopMovie()
MovieSeek(1)
EndSelect
;SetFocus_(WindowID())
Default
Delay(1)
x = MovieStatus()
If x => 0
SetGadgetState(1,x/FPS)
SS = Int(x / FPS) : While SS > 59:SS-60:Wend
MM = Int(x / FPS / 60) : While MM > 59:MM-60:Wend
HH = Int(x / FPS / 60 / 60) : While HH > 59:HH-60:Wend
If oldSecond <> SS
SetGadgetText(3,RSet(StrU(HH,2),2,"0")+":"+RSet(StrU(MM,2),2,"0")+":"+RSet(StrU(SS,2),2,"0"))
oldSecond = SS
EndIf
EndIf
UpdateWindow_(WindowID())
EndSelect
ForEver
Else
MessageRequester("ERROR","Cant init movie engine !",#MB_ICONERROR):End
EndIf
EndIf
; ExecutableFormat=Windows
; FirstLine=1
; EnableXP
; EOF