Announcement

Collapse
No announcement yet.

Animation per Zufall stoppen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Animation per Zufall stoppen

    Hallo,

    wie kann ich eine Animation ein paar Mal (vielleicht 5 Sekunden) abspielen und dann per Zufall anhalten, sodass jedes Mal ein anderes (oder u.U. das gleiche) Frame zu sehen ist?

    MfG

    Andy

  • #2
    Wie programmierst du die Animation? Über einen Timer? Über die TAnimate-Komponente?? Oder über den Media-Player??? Oder ganz anders?????? Wenn ich das weiss, kann ich dir vielleicht helfen...<p>
    Gruß,<br>
    Bernhar

    Comment


    • #3
      Hallo Bernhard,

      ich benutze eine TGifImage-Komponente. Das Programm, welches ich schreibe, is sowas ähnliches wie Flaschendrehen. Die Animation ist dementsprechend eine sich drehende Flasche. Wenn ich auf die Flasche klicke, soll sie sich ein paar Mal drehen (Animation starten) und dann irgendwann (höchstens 5 Sekunden) per Zufall stoppen (TGifImage.Animate := False Das dann aktuelle Frame bekomme ich über "CurrentFrame" raus.

      MfG

      And

      Comment


      • #4
        Hm, *grübel, grübel*, dann weisst du eigentlich ja eh schon alles, um die Animation zu stoppen...
        <p>
        Wenn es dir ums Bis-Zu-5-Sek.-Warten geht: Ich würde zuerst beim Programmstart einmalig den Zufallsgenerator mit <b>Randomize;</b> initiallisieren. Dann würde ich die Timer Komponente benutzen, Eigenschaft Enabled auf False setzen, und beim Start der Animation den Interval des Timers setzen:
        <p>
        <pre>Timer1.Interval := Random(4000) + 1000 // z.B. zwischen 1 und 5 Sekunden zufällig warten
        Timer1.Enabled := True;</pre><p>

        Im Timer_Ereignis würde ich dann die Animation wieder stoppen:<p>
        <pre>
        Timer1.Enabled := False; // Timer stoppen
        GifImage1.Animate := False; // Animation stoppen
        ShowMessageFmt('Du musst Nr. %d küssen. Viel Spass! :-)', [GifImage1.CurrentFrame]);]
        </pre><p>

        Also in Prinzip ist das warten ja eh total einfach.<p>
        Alternativ kannst du natürlich zum Warten auch die API-Routine <b>Sleep</b> benutzen oder dir eine Schleife mit einen <b>Application.ProcessMessages;</b> zusammenbasteln. Die Timer-Variante finde ich aber am elegantesten

        Comment

        Working...
        X