SDL:计时器和WaitEvent

时间:2014-12-11 02:44:45

标签: c sdl

因此,我的游戏的主循环基于SDL_WaitEvent类型,在该类型中,它等待用户在尝试发现随机单词时输入新的字母。我的游戏需要这个才能正常工作,但看起来SDL_WaitEvent一直待用,直到用户按下某个东西。问题是我需要我的计时器继续刷新,以便玩家跟踪它,但当游戏到达事件循环时,我的计时器保持闲置状态,我无法找到一个让它保持清爽,任何提示非常感谢。

汇总:

计时器启动:59(秒) 。 。

它只会刷新并显示我按下的时间和时间。

1 个答案:

答案 0 :(得分:2)

SDL_AddTimer() with a callback that uses SDL_PushEvent() to post a user message to the event queue

/* Start the timer; the callback below will be executed after the delay */

Uint32 delay = (33 / 10) * 10;  /* To round it down to the nearest 10 ms */
SDL_TimerID my_timer_id = SDL_AddTimer(delay, my_callbackfunc, my_callback_param);

...

Uint32 my_callbackfunc(Uint32 interval, void *param)
{
    SDL_Event event;
    SDL_UserEvent userevent;

    /* In this example, our callback pushes an SDL_USEREVENT event
    into the queue, and causes our callback to be called again at the
    same interval: */

    userevent.type = SDL_USEREVENT;
    userevent.code = 0;
    userevent.data1 = NULL;
    userevent.data2 = NULL;

    event.type = SDL_USEREVENT;
    event.user = userevent;

    SDL_PushEvent(&event);
    return(interval);
}