Fade In/Out com Allegro

Há um tempinho atrás eu postei um código de Fade in/out com fblend que eu adaptei do código que peguei no Allegro.cc. Mas eu nem pensei, que tem gente que não precisa usar a fblend (ainda), e sempre me perguntam como fazer isso. Então vou postar aqui como usar aquele código.

Acredito que o jeito mais fácil, seja adicionar estas funções no seu arquivo fonte:

void highcolor_fade_in(BITMAP *bmp_orig, int speed)
{
   BITMAP *bmp_buff;

    if ((bmp_buff = create_bitmap(SCREEN_W, SCREEN_H)))
    {
        int a;
        if (speed <= 0) speed = 16;

        for (a = 0; a < 256; a+=speed)
        {
            clear(bmp_buff);
            set_trans_blender(0,0,0,a);
            draw_trans_sprite(bmp_buff, bmp_orig, 0, 0);
            vsync();
            blit(bmp_buff, screen, 0,0, 0,0, SCREEN_W, SCREEN_H);
        }
        destroy_bitmap(bmp_buff);
    }

    blit(bmp_orig, screen, 0,0, 0,0, SCREEN_W, SCREEN_H);
}

void highcolor_fade_out(int speed)
{
    BITMAP *bmp_orig, *bmp_buff;

    if ((bmp_orig = create_bitmap(SCREEN_W, SCREEN_H)))
    {
        if ((bmp_buff = create_bitmap(SCREEN_W, SCREEN_H)))
        {
            int a;
            blit(screen, bmp_orig, 0,0, 0,0, SCREEN_W, SCREEN_H);
            if (speed <= 0) speed = 16;

            for (a = 255-speed; a > 0; a-=speed)
            {
                clear(bmp_buff);
                set_trans_blender(0,0,0,a);
                draw_trans_sprite(bmp_buff, bmp_orig, 0, 0);
                vsync();
                blit(bmp_buff, screen, 0,0, 0,0, SCREEN_W, SCREEN_H);
            }
            destroy_bitmap(bmp_buff);
        }
        destroy_bitmap(bmp_orig);
    }

    rectfill(screen, 0,0, SCREEN_W,SCREEN_H, makecol(0,0,0));
}

E depois só chamar as funções, mas você pode criar um arquivo fonte, colocar estas funções e então criar um arquivo header e colocar as respectivas declarações das funções.

Tá, mas como se usa?

Assim… A função fade_in, vai do pretão para uma imagem, então você tem que ter esta imagem que você quer que apareça (tela inteira) em um BITMAP, então você faz isso:

highcolor_fade_in(bitmap, 16);

Lembrando que quanto maior for o valor dado a velocidade (no caso ), mas rápido vai ser, e este valor vai de 1 a 255.

Já a função de fade_out, que transforma da imagem atual para o preto, é assim:

highcolor_fade_out(16);

E a regra para a velocidade é a mesma do fade_in! ^^

Bom, é isso ae pessoal, artigo simples para iniciantes! :)

Flw

Google Buzz
Compartilhar: Share this post with the world.
  • Twitter
  • Posterous
  • Facebook
  • del.icio.us
  • Digg
  • Friendfeed
  • Google
  • LinkedIn
  • Reddit
  • StumbleUpon
  • Technorati

Posts semelhantes:

  1. Fade In/Out com fblend no Allegro
  2. Entrada de Texto no Allegro
  3. Fontes TTF no Allegro
  4. Algumas Implementações de Primitivas com Allegro
  5. MotionBlur com Allegro

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>