Documentation de la bibliothèque MLV-0.6.705

advanced/09_animation.c

A ECRIRE

#include <MLV/MLV_all.h>
#include <stdio.h>
#include <stdlib.h>

//
// Attention ! 
// Pour pouvoir compiler ce programme sous windows et sous macintosh,
// il faut, pour la déclaration du main, respecter strictement la syntaxe
// suivante :
//
int main( int argc, char *argv[] ){
        int width = 640, height = 480;

        MLV_init_audio();
        MLV_create_window( "advanced - 9 animation", "animation", width, height );

        // On charge les données multimédias en mémoire
        const char* file_path_of_creature = "creature.png";
        MLV_Image* creature = MLV_load_image( file_path_of_creature );
        if( ! creature ){
                fprintf(
                        stderr, "It was impossible to load the file %s.\n",
                        file_path_of_creature
                );
                exit(1);
        }
        const char* file_path_of_sound = "walk.ogg";
        MLV_Sound* sound = MLV_load_sound( file_path_of_sound );
        if( ! sound ){
                fprintf(
                        stderr, "It was impossible to load the file %s.\n",
                        file_path_of_sound
                );
                exit(1);
        }

        // On construit une animation avec les donnée multimédias
        // précédement chargées.
        MLV_Animation* animation;
        int nb_frames = 6;
        int nb_layers = 1;
        int nb_channels = 1;
        int w = 79, h = 79;

        MLV_Image* images[4];
        images[0] = MLV_copy_partial_image( creature, 0, 0, w, h );
        images[1] = MLV_copy_partial_image( creature, 1*(w+1), 0, w, h );
        images[2] = MLV_copy_partial_image( creature, 2*(w+1), 0, w, h );
        images[3] = MLV_copy_partial_image( creature, 3*(w+1), 0, w, h );

        animation       = MLV_create_animation(
                nb_frames, nb_layers, nb_channels
        );

        int layer = 0;
        MLV_add_frame_in_animation( 
                images+0, &sound, 4, animation
        );
        MLV_add_frame_in_animation(
                images+1, NULL, 4, animation
        );
        MLV_add_frame_in_animation(
                images+2, &sound, 4, animation
        );
        MLV_add_frame_in_animation(
                images+3, NULL, 4, animation
        );

        // Création d'un lecteur d'animation
        MLV_Animation_player* animation_player = MLV_create_animation_player( animation );

        // On lance la lecture de l'animation
        MLV_play_animation_player( animation_player );

        // On active le son
        MLV_turn_on_sound_of_animation_player( animation_player, 0 );
        MLV_change_sound_volume_of_animation_player( animation_player, 0, 0.2 );

        // On fice le nombre d'image par seconde
        MLV_change_frame_rate( 24 );

        int avance = 0;
        int pas = 4;
        MLV_Keyboard_button touche;
        while( 
                MLV_get_event (
                        &touche, NULL, NULL,
                        NULL, NULL,
                        NULL, NULL, NULL,
                        NULL
                ) == MLV_NONE ||
                touche != MLV_KEYBOARD_ESCAPE
        ){
                MLV_update_animation_player( animation_player );

                MLV_draw_filled_rectangle( 0,0, width, height, MLV_COLOR_BROWN );
                MLV_draw_filled_rectangle(
                        width/2,0, width/2, height, MLV_COLOR_YELLOW
                );
                avance += pas;
                if( avance > width-w ){
                        MLV_play_revert_animation_player( animation_player );
                        pas = -pas;
                }
                if( avance < 0 ){
                        MLV_play_animation_player( animation_player );
                        pas = -pas;
                }
                int position_y = 20;
                MLV_draw_image_from_animation_player( animation_player, layer, avance, position_y );
                MLV_actualise_window();
                MLV_play_sound_from_animation_player( animation_player, 0 );
                MLV_delay_according_to_frame_rate();
        }

        MLV_free_animation_player( animation_player );

        MLV_free_animation( animation );

        MLV_free_image( images[0] );
        MLV_free_image( images[1] );
        MLV_free_image( images[2] );
        MLV_free_image( images[3] );

        MLV_free_image( creature );

        MLV_free_window();
        MLV_free_audio();

        return 0;
}

Généré le Thu Jul 12 09:41:48 2012 pour MLV-0.6.705 par  doxygen 1.6.3