animation verlangsamen

Anfängerfragen zum Programmieren mit PureBasic.
spongebob
Beiträge: 13
Registriert: 26.03.2005 11:21

animation verlangsamen

Beitrag 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....
Zuletzt geändert von spongebob am 08.04.2005 14:44, insgesamt 2-mal geändert.
If you go me on the nerven, I steck you in a gulli, make a deckel drauf and you see never the tageslicht.....
GOD BLESS YOU.....
GOTT SEGNE DICH!!!!!!!
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Delay() in die Prozedur der Animation :D
spongebob
Beiträge: 13
Registriert: 26.03.2005 11:21

Beitrag von spongebob »

habe ich schon versucht.... geht nicht :cry:
If you go me on the nerven, I steck you in a gulli, make a deckel drauf and you see never the tageslicht.....
GOD BLESS YOU.....
GOTT SEGNE DICH!!!!!!!
Mike0484
Beiträge: 28
Registriert: 26.03.2005 16:10

Beitrag 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
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

wenn dann gleich delay mit millisekundenangabe
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

PS: GetTickCount_() = ElapsedMilliseconds()
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Auch für Demoversion! Und ausserdem kann dann jeder nachlesen, was die Funktion macht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten