Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Animation nur einmal ablaufen lassen (https://www.delphipraxis.net/117984-animation-nur-einmal-ablaufen-lassen.html)

SaFu 29. Jul 2008 14:10


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:
      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;
Jedes mal wenn eine .avi gefunden wird würde ich diese gerne einmal Komplett durchlaufen lassen aber bekomm das irgendwie nicht hin.

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

DeddyH 29. Jul 2008 14:18

Re: Animation nur einmal ablaufen lassen
 
Laut Hilfe sollte es genügen, Repetitions auf 1 zu setzen.
Zitat:

Die Eigenschaft Repetitions gibt an, wie oft die Frame-Sequenz wiederholt werden soll.

property Repetitions: Integer;

Beschreibung

Setzen Sie Repetitions auf die Anzahl der gewünschten Wiederholungen, die erfolgen sollen, sobald Active auf True gesetzt ist. Nach Ablauf aller Wiederholungen steht Active wieder auf False.

Wenn eine Sequenz nur einmal gezeigt werden soll, setzen Sie Repetitions auf 1. Der Wert 0 löst eine ununterbrochene Wiederholung aus. Die Animation muß dann mit der Eigenschaft Active oder der Methode Stop unterbrochen werden.

Hinweis

Die Methode Play überschreibt den Wert von Repetitions mit dem Wert ihres Parameters Count.

SaFu 29. Jul 2008 14:20

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

Die Muhkuh 29. Jul 2008 14:23

Re: Animation nur einmal ablaufen lassen
 
Was macht der Timer2?

DeddyH 29. Jul 2008 14:23

Re: Animation nur einmal ablaufen lassen
 
Ich verstehe die Logik nicht ganz. Du willst den Timer starten, wenn die Animation einmal durchgelaufen ist?

SaFu 29. Jul 2008 14:26

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;

Medium 29. Jul 2008 14:26

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.

DeddyH 29. Jul 2008 14:29

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.

SaFu 29. Jul 2008 14:33

Re: Animation nur einmal ablaufen lassen
 
Zitat:

Zitat von Medium
Du solltest evtl. besser auf Active prüfen. Repetitions wird nicht pro Durchlauf runtergezählt, sondern ist nur ein Vorgabewert.

Danke ging aber auch nicht

Das mit dem OnStop hat funktioniert danke schön :thumb:

Medium 29. Jul 2008 14:36

Re: Animation nur einmal ablaufen lassen
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von OH
[...]Nach Ablauf aller Wiederholungen steht Active wieder auf False.[...]


Dann stimmt diese Aussage der Hilfe nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz