SDL_PollEvent()
SDL_Event ev;
SDL_PollEvent(&ev)
|
イベント1、イベント2、イベント3、イベント4・・・・ | |
SDL_Event構造体のev | 順番待ちをしてるイベント | |
↓イベントがあるので、イベント1のみ読み込まれる。値はture | ||
|
イベント2、イベント3、イベント4・・・・ | |
↓イベント1が消去され、イベント2が読み込まれる。 | ||
|
イベント3、イベント4、イベント5・・・・ | |
↓最後まで行くと・・・ | ||
|
待機イベントなし。 | |
イベントが全てなくなったので、falseを返す。 |
これで、ようやく前回のev.typeが目的のKEYDOWNにたどり着けるようになりました。#include <stdio.h> #include "SDL/SDL.h" #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") bool Event(void); //boolはtureかfalseのみ扱う定義 int main(int argc, char* argv[]) { SDL_Init(SDL_INIT_VIDEO); SDL_WM_SetCaption("SAMPLEファイル",NULL); SDL_Surface *screen; screen = SDL_SetVideoMode( 640 , 480 , 32 , SDL_SWSURFACE ); while(1) //プログラムを起動し続けるためにループを作る。 { if(!Event()) break; //もしイベントがあれば、ループを抜ける。 } SDL_Quit(); return 0; } bool Event() //イベント監視用の関数を作る。 { SDL_Event ev; while(SDL_PollEvent(&ev)) //イベントがある限り続ける { if(ev.type == SDL_KEYDOWN) //キーが押されたかどうかの確認。 { printf("キーが押されました"); return false; //falseを返す。 break; } } return ture; //イベントがなければtureを返す。 }