Bisonte hat geschrieben:Den Film kann ich mir in einem Canvas weniger vorstellen (ich schätze mal das das ganze etwas langsam wäre?),
allerdings die Steuerelemente schon !
Hm, möglicherweise ist es langsamer mit bestimmten Videos (Dateigröße, Auflösung, Framerate).
Die mir z.Z. zur Verfügung stehenden Dateien laufen eigentlich flüssig.
Allerdings legt sich der Movie über das CanvasGadget, so dass der Doppelklick das Gadget gar nicht erreicht.
Code: Alles auswählen
; PureBasic - Movie example file;
; (c) 2001 - Fantaisie Software
If InitMovie() = 0
MessageRequester("Error", "Can't initialize movie playback !", 0)
End
EndIf
Enumeration
#Canvas
EndEnumeration
MovieName$ = OpenFileRequester("Choose the movie to play", "", "Movie/Audio files|*.avi;*.mpg;*.asf;*.mp3;*.wav|All Files|*.*", 0)
If MovieName$
If LoadMovie(0, MovieName$)
OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "PureBasic - Movie")
CanvasGadget(#Canvas, 0, 0, MovieWidth(0), MovieHeight(0))
PlayMovie(0, GadgetID(#Canvas)) ; Auskommentieren um zu sehen, dass der Doppelklick regulär erkannt wird
Repeat
event = WaitWindowEvent(20)
If event = #PB_Event_Gadget
If EventGadget()=#Canvas
If EventType() = #PB_EventType_LeftDoubleClick
Debug "Double Click"
EndIf
EndIf
EndIf
Until event = #PB_Event_CloseWindow
Else
MessageRequester("Error", "Can't load the movie...", 0)
EndIf
EndIf
Es scheint überhaupt kein Maus-Klick registriert zu werden. Mausrad jedoch schon... (WindowEvent() gibt 522 zurück, unabhängig von der Richtung)
Folgender Eventloop zum testen:
Code: Alles auswählen
Repeat
event = WaitWindowEvent(1000)
Debug event
Until event = #PB_Event_CloseWindow
Bei einem Klick wird "0" ausgegeben, aber das kann's ja wohl nicht sein. Scheint eher so als ob ein Event registriert wurde, PB aber nichts damit anfangen kann, also gibt die Funktion 0 zurück.
KeyboardShortcuts funktionieren jedoch.
Eine Windows-Lösung wäre GetAsyncKeyState_(#VK_LBUTTON) abzufragen und das Delay für einen Doppelklick von Windows auszulesen (Code schwirrt irgendwo hier im Forum oder Code-Archiv herum).
Den einfachen Linksklick auf die Control-Gadgets funktioniert aber ganz normal. Das ist kein Problem.
Code: Alles auswählen
If InitMovie() = 0
MessageRequester("Error", "Can't initialize movie playback !", 0)
End
EndIf
Enumeration
#Canvas
#Controls
EndEnumeration
MovieName$ = OpenFileRequester("Choose the movie to play", "", "Movie/Audio files|*.avi;*.mpg;*.asf;*.mp3;*.wav|All Files|*.*", 0)
If MovieName$
If LoadMovie(0, MovieName$)
OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0)+40, "PureBasic - Movie")
CanvasGadget(#Canvas, 0, 0, MovieWidth(0), MovieHeight(0))
CanvasGadget(#Controls, 0, MovieHeight(0), MovieWidth(0), 40)
PlayMovie(0, GadgetID(#Canvas)) ; Auskommentieren um zu sehen, dass der Doppelklick erkannt wird
Repeat
event = WaitWindowEvent(10)
If event = #PB_Event_Gadget
If EventGadget() = #Controls
If EventType() = #PB_EventType_LeftClick
Debug "Linksklick auf Control Canvas"
EndIf
EndIf
EndIf
Until event = #PB_Event_CloseWindow
Else
MessageRequester("Error", "Can't load the movie...", 0)
EndIf
EndIf