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: 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ął ? |
|
DejaVu |
» 2009-07-15 23:10:48 Wyczyścić bufor. |
|
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 :(. |
|
DejaVu |
» 2009-07-15 23:24:51 Rysujesz na Bufor2, a nie Bufor. |
|
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: while( !key[ KEY_ESC ] ) { 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... ;/ |
|
DejaVu |
» 2009-07-16 18:24:41 Nic dziwnego, że mryga: blit( Bufor, screen, 0, 0, 0, 0, Bufor->w, Bufor->h ); blit( Bufor2, screen, 0, 0, 378, 256, Bufor2->w, Bufor2->h );
Powinno być: clear_to_color( Bufor, makecol( 0, 0, 0 ) );
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, Bufor, 0, 0, 378, 256, Bufor2->w, Bufor2->h ); }
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. |
|
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() |
|
« 1 » |