Thursday, 06 October 2005 00:35
非洲饿鱼
|
[前一页]
目录
[后一页]
使用SDL
事件
调用SDL_WaitEvent()等待事件。
|
提示:
SDL支持国际键盘,解释键盘事件,并支持UNICODE(置于event.key.keysym.unicode)。由于Unicode支持需要额外的处理,当需要Unicode时必须先调用
SDL_EnableUNICODE()。 |
例程:
{
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_KEYDOWN:
printf("键 %s 按下了!\n",
SDL_GetKeyName(event.key.keysym.sym));
break;
case SDL_QUIT:
exit(0);
}
}
|
事件轮询调用SDL_PollEvent()函数。
|
提示:
如果只要查看(peek)事件,而不需要从事件队列中移走,你可以用SDL_PEEKEVENT作为参数调用SDL_PeepEvents()。 |
例程:
{
SDL_Event event;
while ( SDL_PollEvent(&event) ) {
switch (event.type) {
case SDL_MOUSEMOTION:
printf("鼠标移动了%d,%d 到 (%d,%d)\n",
event.motion.xrel, event.motion.yrel,
event.motion.x, event.motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
printf("鼠标 %d 点击在 (%d,%d)\n"),
event.button.button, event.button.x, event.button.y);
break;
case SDL_QUIT:
exit(0);
}
}
}
|
除了直接处理事件,每种类型的事件都有一个相应的函数可以用作检查事件的状态。如果你需要独占使用,应该调用
SDL_EventState() 忽略所有的事件,并且定期的调用SDL_PumpEvents()更新程序的事件状态。
|
提示:
SDL_ShowCursor()可以显示或者隐藏光标/鼠标。 |
例程:
{
SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
}
void CheckMouseHover(void)
{
int mouse_x, mouse_y;
SDL_PumpEvents();
SDL_GetMouseState(&mouse_x, &mouse_y);
if ( (mouse_x < 32) && (mouse_y < 32) ) {
printf("鼠标在左上角!\n");
}
}
|
[前一页]
目录
[后一页]
|

Last Updated ( Tuesday, 11 October 2005 06:07 )