TSDL_Event=記錄
把UInt8裝入盒子的
SDL_NOEVENT:type_:位元組;
SDL_ACTIVEEVENT:活躍:TSDL_ActiveEvent;
SDL_KEYDOWN,SDL_KEYUP:關鍵:TSDL_KeyboardEvent;
SDL_MOUSEMOTION:運動:TSDL_MouseMotionEvent;
SDL_MOUSEBUTTONDOWN,SDL_MOUSEBUTTONUP:按鍵:TSDL_MouseButtonEvent
);
SDL_QUITEV:離開:TSDL_QuitEvent;
SDL_SYSWMEVENT:syswm:TSDL_SysWMEvent;
末端;
類型 | 類型的事件 |
活躍 | 活化事件 |
關鍵 | 鍵盤事件 |
運動 | 滑鼠運動事件 |
按鍵 | 滑鼠按鍵事件 |
jaxis | 操縱桿軸運動事件 |
jball | 操縱桿跟蹤球向事件做手勢 |
jhat | 操縱桿帽子運動事件 |
jbutton | 操縱桿按鍵事件 |
調整大小 | 應用窗戶調整事件的大小 |
離開 | 應用離開需求事件 |
用戶 | 用戶定義事件 |
syswm | 未下定義的窗戶經理事件 |
SDL_Event聯合向所有的事件觸摸是核心SDL是它的大概在 TSDL_Surface以後最重要結構.TSDL_Event是一聯合在所有中事件設計在SDL使用的,使用它是一知道哪一個個聯合成員和哪一個種事件類型 關聯的簡單物質
事件類型 | 事件結構 |
---|---|
SDL_ACTIVEEVENT | SDL_ActiveEvent |
SDL_KEYDOWN沿著 | SDL_KeyboardEvent |
SDL_MOUSEMOTION | SDL_MouseMotionEvent |
SDL_MOUSEBUTTONDOWN沿著 | SDL_MouseButtonEvent |
SDL_JOYAXISMOTION | SDL_JoyAxisEvent |
SDL_JOYBALLMOTION | SDL_JoyBallEvent |
SDL_JOYHATMOTION | SDL_JoyHatEvent |
SDL_JOYBUTTONDOWN沿著 | SDL_JoyButtonEvent |
SDL_QUIT | SDL_QuitEvent |
SDL_SYSWMEVENT | SDL_SysWMEvent |
SDL_VIDEORESIZE | SDL_ResizeEvent |
SDL_USEREVENT | SDL_UserEvent |
TSDL_Event結構有二使用
閱讀有關事件行列事件
把事件放在事件行列上
從事件行列中選讀事件完成或者 SDL_PollEvent或者 SDL_PeepEvents.我們將使用SDL_PollEvent 和經由一個例子跨步.
首先,我們建立一空虛TSDL_Event 結構
test_event:TSDL_Event;SDL_PollEvent從事件行列去除下一個事件,如果事實上沒有有關行列事件,它除此之外歸還 0它歸還1.我們一陣子使用圈加工每一依次事件.
在(SDL_PollEvent((@test_event)>0)做的同時SDL_PollEvent功能拿一指向一是要充滿事件資訊的TSDL_Event結構的指針.我們知道如果SDL_PollEvent 從行列去除一事件,那時事件資訊將被把置於我們test_event結構,但是我們也知道類型的事件將被把放入 test_event的類型成員.那樣處理每一事件類型 seperately我們使用一項開關聲明.
把test_event.type_裝入盒子的我們需要知道什麼種類的尋找我們正的事件 和事件打字有那些事件.用戶在什麼地方所以出租認為我們想要察覺,正在我們應用以內移動滑鼠指針.我們檢查我們SDL_MOUSEMOTION是的事件類型和注意,比可能更多,尋找我們正的事件.多一點 研究說使用SDL_MOUSEMOTION事件在是SDL_Event的 運動成員的 SDL_MouseMotionEvent結構以內是被處理.我們能為在我們開關聲明以內SDL_MOUSEMOTION事件 類型好像那樣檢查:
SDL_MOUSEMOTION:我們需要的所有的做為現在讀從test_event的 運動成員出來資訊.
開始
printf("我們一運動得到event.\n)";
printf目前滑鼠位置是:(%d,%d)\n,test_event.motion.x,test_event.motion.y;
末端;
未履行:
printf("(未觸摸過的Event!\n)";
末端;
末端;
末端;
printf("(事件行列empty.\n)";
也把事件推給事件行列和那樣使用它作為一雙向的通訊通道是可能的. SDL_PushEvent和 SDL_PeepEvents允許你安置到事件行列上面事件.這個通常被過去經常把一SDL_USEREVENT放在事件行列,但是如果你提出心願,你能使用它張貼假冒的投入事件的上.建立你的自己事件是一選擇你想要的事件類型,設定類型成員和使適合成員結構充滿資訊的簡單物質.
user_event:TSDL_Event;
user_event.type:=SDL_USEREVENT;
user_event.user.code:=2;
user_event.user.data1:=零;
user_event.user.data2:=零;
SDL_PushEvent((@user_event);