TSDL_Event

名字

TSDL_Event--普遍事件結構

結構定義

  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);

也注意到

SDL_PollEvent ,SDL_PushEvent ,SDL_PeepEvents