McAffey Temat założony przez niniejszego użytkownika |
Kursor miga [allegro] » 2010-05-12 23:00:27 Witam! Mam problem z kursorem. Podczas poruszania myszką mocno mruga, a gdy nią nie ruszam, to znika całkowicie. Dzieje się tak tylko gdy mam ustawiony pełny ekran a gdy mam windowed to wszystko jest w porządku. Mruga i standardowy i własny (załadowany). Niestety patent podany w poście z linku ( http://forum.ddt.pl/?Tid=1959 ) nie działa. Macie jakieś pomysły ? Dziękuję i pozdrawiam |
|
malan |
» 2010-05-12 23:05:14 Może kota się boi? Schowaj go tak, żeby myszka nie widziała :). Tak na poważnie to my tu czarować nie potrafimy ( chociaż niektórzy... ;) ) - KOD :). |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2010-05-12 23:08:44 Myślałem, że się obejdzie bez gdyż nie ma w nim wiele. Już daję : #include <allegro.h>
BITMAP * kursor;
void laduj_kursor() { kursor = load_bitmap( "kursor.bmp", NULL ); if( !kursor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie moge zaladowac grafiki ( kursor )" ); allegro_exit(); } };
int mx = 0, my = 0, mb = 0; void myszka() { if( mx != mouse_x || my != mouse_y || mb != mouse_b ) { mx = mouse_x; my = mouse_y; mb = mouse_b; } };
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 1280, 1024, 0, 0 ); laduj_kursor(); install_mouse(); show_mouse( screen ); set_mouse_sprite( kursor ); unscare_mouse(); clear_to_color( screen, makecol( 0, 0, 180 ) ); BITMAP * bufor = NULL; BITMAP * tlo = NULL; BITMAP * planeta1 = NULL; bufor = create_bitmap( 1280, 1024 ); tlo = load_bmp( "tlo.bmp", default_palette ); planeta1 = load_bmp( "planeta1.bmp", default_palette ); int widok; widok = 1; while( !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 0, 0, 0 ) ); myszka(); draw_sprite( bufor, tlo, 0, 0 ); if( widok == 1 ) { draw_sprite( bufor, planeta1, 300, 600 ); } blit( bufor, screen, 0, 0, 0, 0, 1280, 1024 ); } destroy_bitmap( bufor ); destroy_bitmap( tlo ); destroy_bitmap( planeta1 ); destroy_bitmap( kursor ); allegro_exit(); return 0; } END_OF_MAIN();
Po wzięciu w komentarz te dwa rysowania (tlo i planeta1) nadal miga. |
|
malan |
» 2010-05-12 23:14:16 set_color_depth(32);
Chociaż wątpię żeby to coś dało... clear_to_color(screen, makecol(0,0,180));
To też raczej niepotrzebne ;p. |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2010-05-12 23:23:46 Niestety nie pomogło... Jakieś inne pomysły ;) ?? |
|
DejaVu |
» 2010-05-13 09:08:01 To akurat jest proste - jeżeli używasz buforowania nie wyświetlaj myszki za pomocą standardowego mechanizmu. Po prostu rysuj bitmapę myszki na buforze na pozycji X,Y, którą możesz pobrać nawet jeśli myszka jest niewidoczna na ekranie. |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2010-05-13 11:03:18 Niby genialne w swej prostocie, ale jak zrobiłem show_mouse(NULL); I w głównej pętli tuż nad wyświetlaniem bufora na ekran dodałem draw_sprite(bufor, kursor, mx, my); to kursor pojawia się na ekranie ale w lewym górnym rogu i się z niego nie chce ruszyć. Jakieś rady ;) ?? Edit: Idiota ze mnie, nie zauważyłem, że po różnych kombinacjach została mi w komentarzu "myszka();" czyli, program nie wiedział co to "mx" i "my". Dzięki wszystkim już wszystko działa jak powinno. |
|
« 1 » |