tompibed Temat założony przez niniejszego użytkownika |
[C++] wyświetlanie obiektu przez 2 sekundy » 2012-12-15 16:57:51 Witam, mam problem z konstuowaniem pomiaru czasu. Chciałbym zrobić, aby dany obiekt wyświetlał mi się przez 2 sekundy po czym gasł na 3 sekundy i od nowa. Napisałem póki co pobieranie czasu z systemu, lecz jak mówię nie mam pojęcia jak zrobić taki pomiar. Prosze bardzo o pomoc { SYSTEMTIME time; GetLocalTime( & time ); if( time.wSecond % 2 == 0 ) { Sleep( 2000 ); al_draw_filled_circle( znak.x, znak.y + 28, 13, al_map_rgb( 0, 255, 0 ) ); } else al_draw_filled_circle( znak.x, znak.y - 28, 13, al_map_rgb( 255, 0, 0 ) ); }
Zrobiłem wyświetlanie pierwszego obiektu gdy sekunda jest podzielna przez 2. Proszę wybaczyć, bo pewnie się wydaje to proste zadnaie, lecz ja jak mówię nie mam pojęcia, niestety. |
|
jsc |
» 2012-12-15 17:04:54 Proponuję zrobić skalę gaśnięcia i procedurę przesuwającej się po niej o n pozycji. A na końcu uruchamiać ją w pętli co sleep (3000 / n). |
|
tompibed Temat założony przez niniejszego użytkownika |
» 2012-12-15 17:06:08 Wybaczcie, zapomniałem dodać, że Sleep() zacina mi całą aplikację, czyli musi to być bez Sleep() |
|
jsc |
» 2012-12-15 17:13:03 No to masz 2 opcje, napisać program wielowątkowo, albo wziąć jakąś bibliotekę np. WinAPI, GTK czy inne graficzne) z obsługą zdarzeń zegara |
|
Savail |
» 2012-12-15 17:24:26 Możesz użyć funkcji timeGetTime() np. w ten sposób: bool draw = true; DWORD start = timeGetTime(); while( draw ) { if( timeGetTime() - start < 2000 ) { al_draw_filled_circle( znak.x, znak.y + 28, 13, al_map_rgb( 0, 255, 0 ) ); } else if( timeGetTime() - start > 5000 ) start = timeGetTime(); } |
|
jsc |
» 2012-12-15 17:28:32 @Up Miłoby było, żebyś napisał, że to funkcja z WinApi, bo nie każdy się domyśli. |
|
tompibed Temat założony przez niniejszego użytkownika |
» 2012-12-15 17:33:30 Dzięki za pomoc i przepraszam, że nie napisałem dokładnie, chodizło mi aby to generalnie działało, można zamknąć, dzieki wielkie. |
|
« 1 » |