![]() |
Animation nur einmal ablaufen lassen
Hi
Wie kann ich eine .avi ein enziges mal abspielen lassen. Vielleicht mal etwas Code dann wirds ersichtlicher. Das hier läuft in einem Timer
Delphi-Quellcode:
Jedes mal wenn eine .avi gefunden wird würde ich diese gerne einmal Komplett durchlaufen lassen aber bekomm das irgendwie nicht hin.
if (bild = '.jpg') then //Pfad + .jpg auf TImage
begin AnVideo.Visible:= False; // Laden der Bilder Image1.Picture.LoadFromFile(Bilddat + FileListBox1.Items[index]); end; if (bild = '.avi') then //Pfad + .avi auf TAnimate begin AnVideo.Visible:= True; Timer2.Enabled:= False; AnVideo.FileName:= Form1.VistaPfadBilder + FileListBox1.Items[index]; AnVideo.Active:= True; if Anvideo.Repetitions <> 1 then begin Timer2.Enabled:= True; end; end; Benutze zur Zeit zum Testen die Clock.avi die hat ja mehrere Bilder und wenn die durchgelaufen sind (die .avi) dann der Timer wieder laufen |
Re: Animation nur einmal ablaufen lassen
Laut Hilfe sollte es genügen, Repetitions auf 1 zu setzen.
Zitat:
|
Re: Animation nur einmal ablaufen lassen
Hatte ich ja und habe dann ja auch darauf geprüft oben ist es jetzt zwar <> aber hatte auf = geprüft Trotzdem ging es nicht
|
Re: Animation nur einmal ablaufen lassen
Was macht der Timer2?
|
Re: Animation nur einmal ablaufen lassen
Ich verstehe die Logik nicht ganz. Du willst den Timer starten, wenn die Animation einmal durchgelaufen ist?
|
Re: Animation nur einmal ablaufen lassen
Der ist für das laden der Bilder zusändig
Ich halte Ihn an um die Avi datei abzuspielen und dannach soll er weiter laufen. Mir ist klar das er dann iwieder von anfang an anfängt aber das er da weiter macht wo er aufgehört hat mach ich dannach
Delphi-Quellcode:
procedure TForm3.Timer2Timer(Sender: TObject);
begin if FileListBox1.Items.Count > 0 then begin if index > FileListBox1.Items.Count -1 then index:= 0; FileListbox1.Selected[index]:= true; bild:= Lowercase(ExtractFileExt(Bilddat + FileListBox1.Items[index])); if (bild = '.jpg') then //Pfad + .jpg begin AnVideo.Visible:= False; // Laden der Bilder Image1.Picture.LoadFromFile(Bilddat + FileListBox1.Items[index]); end; if (bild = '.avi') then //Pfad + .avi begin AnVideo.Visible:= True; Timer2.Enabled:= False; AnVideo.FileName:= Form1.VistaPfadBilder + FileListBox1.Items[index]; AnVideo.Active:= True; if Anvideo.Repetitions = 1 then begin Timer2.Enabled:= True; end; end; inc(index); Label2.Caption:= 'Bild '+ IntToStr(index)+' von '+ IntToStr(FileListBox1.Items.Count); end else begin Timer2.Enabled:= false; end; end; |
Re: Animation nur einmal ablaufen lassen
Du solltest evtl. besser auf Active prüfen. Repetitions wird nicht pro Durchlauf runtergezählt, sondern ist nur ein Vorgabewert.
|
Re: Animation nur einmal ablaufen lassen
Wenn ich das richtig verstanden habe, wird bei TAnimate nach dem Abspielen das Ereignis OnStop ausgelöst. Das wäre IMO der bessere Ansatzpunkt.
|
Re: Animation nur einmal ablaufen lassen
Zitat:
Das mit dem OnStop hat funktioniert danke schön :thumb: |
Re: Animation nur einmal ablaufen lassen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz