SDL學習筆記 2 事件處理

2021-10-14 10:00:12 字數 2897 閱讀 2212

sdl事件是諸如按鍵,滑鼠移動,操縱按鈕按下之類的東西。

在內部,sdl將所有等待處理的事件儲存在事件佇列中。首選方式是使用sdl_pollevent()接收系統事件。它可以從主迴圈完成,並且在等待事件發布時不會掛起主迴圈。如果佇列上沒有事件,則返回0,否則返回1。

定義是否退出的標誌isquit初始值設定為0,表示不退出。

我們使用while迴圈依次處理每個事件,直到遇到sdl_quit事件,退出迴圈結束程序。

int isquit =0;

while

(!isquit)

}printf

("event queue empty.\n"

);

除了從sdl中取事件外,我們也可以自定義事件,放到時間處理佇列中。

sdl_event user_event;

user_event.type = sdl_userevent;

user_event.user.code =2;

user_event.user.data1 =

null

;user_event.user.data2 =

null

;sdl_pushevent

(&user_event)

;

sdl_event是sdl中使用的所有事件結構的並集。 使用它很簡單,只需知道哪種事件型別對應於哪個聯合成員即可。 下表列出了這些關係

event type

event structure

sdl_event field

sdl_audiodeviceadded sdl_audiodeviceremoved

sdl_audiodeviceevent

adevice

sdl_controlleraxismotion

sdl_controlleraxisevent

caxis

sdl_controllerbuttondown sdl_controllerbuttonup

sdl_controllerbuttonevent

cbutton

sdl_controllerdeviceevent

cdevice

sdl_dollargesture sdl_dollarrecord

sdl_dollargestureevent

dgesture

sdl_dropfile sdl_droptext sdl_dropbegin sdl_dropcomplete

sdl_dropevent

drop

sdl_fingermotion sdl_fingerdown sdl_fingerup

sdl_touchfingerevent

tfinger

sdl_keydown sdl_keyup

sdl_keyboardevent

key

sdl_joyaxismotion

sdl_joyaxisevent

jaxis

sdl_joyballmotion

sdl_joyballevent

jball

sdl_joyhatmotion

sdl_joyhatevent

jhat

sdl_joybuttondown sdl_joybuttonup

sdl_joybuttonevent

jbutton

sdl_joydeviceadded sdl_joydeviceremoved

sdl_joydeviceevent

jdevice

sdl_mousemotion

sdl_mousemotionevent

motion

sdl_mousebuttondown sdl_mousebuttonup

sdl_mousebuttonevent

button

sdl_mousewheel

sdl_mousewheelevent

wheel

sdl_multigesture

sdl_multigestureevent

mgesture

sdl_quit

sdl_quitevent

quit

sdl_syswmevent

sdl_syswmevent

syswm

sdl_textediting

sdl_texteditingevent

edit

sdl_textinput

sdl_textinputevent

text

sdl_userevent

sdl_userevent

user

sdl_windowevent

sdl_windowevent

window

other events

sdl_commonevent

none, use .type

SDL2 0學習筆記 事件處理

sdl通過sdl pollevent函式從事件佇列中取出最早發生的事件並填充sdl event結構。呼叫sdl pollevent後最早發生的事件從事件佇列中清除。sdl pollevent函式原型為 int sdl pollevent sdl event event 當事件佇列中有未處理的事件時s...

SDL學習筆記之二

sdl su ce image sdl loadbmp image.bmp 2.從乙個表面,進行塊複製到另乙個表面 sdl blitsu ce int sdl blitsu ce sdl su ce src,sdl rect sr,sdl su e dst,sdl rect dr 第二個引數指定要傳...

SDL學習筆記之二

sdl su ce image sdl loadbmp image.bmp 2.從乙個表面,進行塊複製到另乙個表面 sdl blitsu ce int sdl blitsu ce sdl su ce src,sdl rect sr,sdl su e dst,sdl rect dr 第二個引數指定要傳...