Animationen. Wie machen?



  • Hi !

    [OT]
    Selbsterkenntnis ist der erste Weg zur Besserung 😃
    [/OT]

    Also, zuerst brauchst du ne struct :

    struct SAnimation
    {
          //position in pixels
          int m_px,m_py;
          //größe in pixel, relative werte
          int m_sx, m_sy;
          //dieses Bitmap verwenden
          HBITMAP m_bitmap;
          //wie lange soll dieses Bild noch sichtbar sein ? (in ms)
          int m_delay;
    };
    

    Dann eine Variable die angibt wielange ein Einzelbild angezeigt werden soll :

    int g_duration = 1000; //<<- 1 Sekunde
    

    In dieser Struct speicherst du einen Animationsschritt. Für jedes Einzelbild füllst du die struct mit passenden Werten.
    Dann am Besten noch einen Vector aus der STL nehmen um alle Bilder zu speichern :

    std::vector <SAnimation> g_animations;
    

    Nun eine Variable die dir sagt welches Bild grade angezeigt werden soll (von 0->g_animations.size()-1 )

    int m_curFrame = 0;
    

    Animation initialisieren :

    SAnimation a;
    
    //gilt für alle Bilder
    a.m_px = 20; a.m_py = 20;
    a.m_sx = 100; a.m_sy = 100;
    a.m_delay = g_duration;
    
    //frame 1
    a.m_bitmap = BILD1;
    g_animations.push_back (a);
    //frame 2
    a.m_bitmap = BILD2;
    g_animations.push_back (a);
    //frame 3
    a.m_bitmap = BILD2;
    g_animations.push_back (a);
    

    Jetzt kommt die Funktion mit der die Animation gespielt wird. Natürlich musst du vorher ein paar Elemente in g_animations eingefügt haben 🙂 :

    void ShowAnimation ()
    {
    //mmmh, mach das am Besten selbst, ist ne gute Übung :)
    //wenn du nicht klarkommst kannst du gerne fragen :P
    }
    

    Edit: Ein paar Leerzeilen entfernt 🙂

    [ Dieser Beitrag wurde am 20.12.2002 um 16:35 Uhr von Headhunter editiert. ]



  • Hmm
    Hast eigentlich recht, dass ich den Rest selber machen solle, aber mein
    Wisssen reicht leider noch nicht bis hin. 🙄
    zb: weiß ich jetzt garnicht, was ein/e Struct, Vector oder ein STL ist. 😞
    Kannste mir das mal n bissel DAU näher beschreiben 😉

    MFG
    FatalError



  • structs sind was grundlegendes in c/c++ (bzw in c++ nimmt man eher klassen als structs).. wie auch immer, lies dir mal paar tuts über c/c++ druch...sowas is Basiswissen!



  • Ach Klassen sind gemeint!
    Was Klassen sind weiß ich ja, aber structs sind mir eher nichtssagend.
    Werd mich mal schlau machen.



  • yo structs sind so ne art abgespeckte variante von klassen 😉



  • Original erstellt von FatalError:
    Ach Klassen sind gemeint!
    Was Klassen sind weiß ich ja, aber structs sind mir eher nichtssagend.
    Werd mich mal schlau machen.

    Jung, lern erst mal die Grundlagen, bevor du hier mit animationen anfängst...
    Du weiss wahrscheinlich noch nicht mal wie man ein Bitmap läd und darstellt...

    Devil



  • Ich weiß, wie man ein Bitmap läd !!!
    Inzwischen bin ich soweit, dass ich nur noch eine Warteschleife brauch.
    Hat da einer ne Idee?
    Ich hab in der Hilfe von VisualC++ nachgeschaut und dort folgendes Programmbeispiel zu Sleep gefunden:

    VOID Sleep(
    DWORD dwMilliseconds // sleep time in milliseconds
    );

    I komm aber damit nicht zurecht.
    Wie füge ich das in mein Programm richtig ein?

    PS:Sorry für das späte Post, hatte Stress mit meinem I-net.

    MFG
    FatalError



  • Bau am besten einen Timer in dein Programm ein. Wenn du Sleep nimmst geht es auch aber dein Programm hängt solange falls du das Sleep nicht aus einem separaten Thread aufrufst.

    --> WM_TIMER
    -> SetTimer



  • Jung, lern erst mal die Grundlagen, bevor du hier mit animationen anfängst... Du weiss wahrscheinlich noch nicht mal wie man ein Bitmap läd und darstellt...

    Jo, weil Animationen auch voll was für die echten Gurus sind. Wodurch soll er denn sonst die simplen Grundlagen lernen außer durch solche kleinen Projekte??? Stures Bücherlesen ist was für Deppen. Durchs ausprobieren wird man richtig gut...



  • Hab ich nun mit dem besagten Timer gemacht.
    Schau mal in folgendem Beitrag von mir nach:
    Kurze Delays erzeugen

    MFG
    FatalError AND MERRY X-MAS 😃


Anmelden zum Antworten