Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] 'Znikanie' obrazka

Ostatnio zmodyfikowano 2009-07-16 22:53
Autor Wiadomość
malan
Temat założony przez niniejszego użytkownika
[Allegro] 'Znikanie' obrazka
» 2009-07-15 23:04:47
Witam.
Robię prosty program a allegro. Mam menu główne, w którym kiedy kliknę na dany obszar uruchamia się dana funkcja x (to działa), następnie w tej funkcji x chciałbym aby po najechaniu na dany obszar wyświetlał się tekst y (to też zrobiłem), ale po wyjechaniu z tego obszaru ma on zniknąć (tego właśnie nie mogę zrobić). Funkcja wykrywające najechanie na dany obszar i wyświetlanie wygląda tak:

C/C++
BITMAP * Bufor2 = NULL;
Bufor2 = create_bitmap( 467, 270 );
//...
void Zaznacz_MK()
{
    if( mouse_x >= 73 && mouse_x <= 265 && mouse_y >= 290 && mouse_y <= 313 )
    {
        masked_blit( iPik, Bufor2, 0, 0, 0, 0, iPik->w, iPik->h );
        blit( Bufor2, Menu_koszary, 0, 0, 325, 190, Bufor2->w, Bufor2->h );
    }
};
Pytanie za 100 punktów- co zrobić, żeby obrazek zniknął ?
P-8551
DejaVu
» 2009-07-15 23:10:48
Wyczyścić bufor.
P-8552
malan
Temat założony przez niniejszego użytkownika
» 2009-07-15 23:21:06
clear_to_color(Bufor,makecol(0,0,0));
 To nie działa :(.
P-8553
DejaVu
» 2009-07-15 23:24:51
Rysujesz na Bufor2, a nie Bufor.
P-8554
malan
Temat założony przez niniejszego użytkownika
» 2009-07-16 10:18:37
Wiem, wiem- zapomniałem '2' dopisać, ale to też nie działało. Zrobiłem tak:

C/C++
while( !key[ KEY_ESC ] )
{
    /*clear_to_color(Bufor,makecol(0,0,0));
      clear_to_color(Bufor2,makecol(0,0,0));*/
   
    masked_blit( Menu_koszary, Bufor, 0, 0, 0, 0, Menu_koszary->w, Menu_koszary->h );
    textprintf_ex( Bufor, font, 20, 10, makecol( 200, 200, 200 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mouse_x, mouse_y, mouse_b );
    blit( Bufor, screen, 0, 0, 0, 0, Bufor->w, Bufor->h );
   
    if( mouse_x >= 73 && mouse_x <= 265 && mouse_y >= 290 && mouse_y <= 313 )
    {
        masked_blit( iPik, Bufor2, 0, 0, 0, 0, iPik->w, iPik->h );
        blit( Bufor2, screen, 0, 0, 378, 256, Bufor2->w, Bufor2->h );
    }
   
    clear_keybuf();
}
 Tylko teraz ten obrazek mi mryga na ekranie, a te podwójne buforowanie zrobiłem przecież. Najpierw wyświetlam go na 'Bufor2', a potem na ekran... ;/
P-8556
DejaVu
» 2009-07-16 18:24:41
Nic dziwnego, że mryga:
C/C++
blit( Bufor, screen, 0, 0, 0, 0, Bufor->w, Bufor->h );
blit( Bufor2, screen, 0, 0, 378, 256, Bufor2->w, Bufor2->h );
Powinno być:
C/C++
clear_to_color( Bufor, makecol( 0, 0, 0 ) );
//tutaj rysowanie do Bufor!!!

//przykład:
if( mouse_x >= 73 && mouse_x <= 265 && mouse_y >= 290 && mouse_y <= 313 )
{
    //Bufor2 jest pomocniczy, ale raczej zbędny - można odrazu przecież rysować do Bufor
    masked_blit( iPik, Bufor2, 0, 0, 0, 0, iPik->w, iPik->h );
    blit( Bufor2, Bufor, 0, 0, 378, 256, Bufor2->w, Bufor2->h );
}

//wyświetlenie bufora
blit( Bufor, screen, 0, 0, 0, 0, Bufor->w, Bufor->h );
Bufor2 jest całkowicie zbędny. Jeśli go używasz to tylko i wyłącznie jako pomocnicza operacja.
P-8557
malan
Temat założony przez niniejszego użytkownika
» 2009-07-16 22:53:11
Poprawiłem błędy, usunąłem 2 bufor i pięknie działa ;). Teraz widzę jaki głupi błąd robiłem...

Dzięki wielkie ;)
Topic.close()
P-8561
« 1 »
  Strona 1 z 1