Seite 1 von 2

animation verlangsamen

Verfasst: 05.04.2005 15:02
von spongebob
also ich habe da so 21 bilder die ich als animation gemacht habe ich dachte das wir d fließend laufen da das ja 21 bilder sind und starte ich das und was sehe ich da :o :o :o
der läuft die so schnell durch das man gerade mal kurz das erste und das letzte sieht und das noch nicht mal richtig :?keine ahnung:?
könnte man es irgendwie machen das der die langsamer abläuft.
das wär cool :allright:
ich habe es endlich geschafft :freak: :allright: aber anders als ihr alle es mir gesagt habt tut mir leid....

Verfasst: 05.04.2005 15:12
von 125
Delay() in die Prozedur der Animation :D

Verfasst: 05.04.2005 15:16
von spongebob
habe ich schon versucht.... geht nicht :cry:

Verfasst: 05.04.2005 16:08
von Mike0484
Hallo,

Ich hoffe ich sage dir jetzt nichts falsches bin selber noch abfänger, aber
probier mal nach jedem Bild ein delay() und dann flipbuffers()

also:
Sprite()
Delay()
Flipbuffers()
sprite()
Delay()
Flipbuffer()
und so weiter

Verfasst: 05.04.2005 16:10
von Rubiko
wenn dann gleich delay mit millisekundenangabe

Verfasst: 05.04.2005 16:13
von Ynnus
Ich würde mit Timern arbeiten. Mit GetTickCount_() kannst du die aktuelle Zeit als Vergleichswert in einer Variablen speichern und nach einer bestimmten Zeit dann erst die Bilder weiterschalten. ;)

Delay ist keine gute Methode, da dann dein Programm für diese Zeit einfriert und keine weiteren Berechnungen möglich sind.

Verfasst: 05.04.2005 16:31
von remi_meier
PS: GetTickCount_() = ElapsedMilliseconds()

Verfasst: 05.04.2005 16:34
von Ynnus
remi_meier hat geschrieben:PS: GetTickCount_() = ElapsedMilliseconds()
Wie auch immer, diese eine Zeile für Linuxversionen zu ändern wäre auch nicht das Problem. ;)
Jedenfalls kein Delay verwenden.

Verfasst: 05.04.2005 16:36
von remi_meier
Auch für Demoversion! Und ausserdem kann dann jeder nachlesen, was die Funktion macht.

Verfasst: 05.04.2005 18:02
von Kaeru Gaman
@spongebob

also, wie auch immer du deine schleife synchronisierst...

ich vermute einfach mal, dass du die frames der animation hochzählst,
indem du so etwas ähnliches machst:

Code: Alles auswählen

Anim+1
If Anim>20
    Anim=0
Endif
damit gehst du natürlich bei jeden Screen-Frame einen Animations-Frame weiter,
und die Anim hat die gleiche Framerate wie der Screen, das ist oft etwas schnell.

du kannst einen Animations-Frame mehrere Screen-Frames lang anzeigen,
indem du so etwas einbaust:

Code: Alles auswählen

Frame+1
If Frame > 5
    Frame = 0
    Anim +1
    If Anim > 20
        Anim = 0
    Endif
Endif
damit änderst du den Anim-Frame nur alle 6 Screen-Frames.

ähnlich geht das auch mit nem timer-sync:

Code: Alles auswählen

If ElapsedMilliseconds() > AnimTimer
    AnimTimer = ElapsedMilliseconds() + 50
    Anim +1
    If Anim > 20
        Anim = 0
    Endif
Endif
damit kommst du auf ca. 20 Anim-Frames pro Sekunde