SDL_TICKS_PASSED,似乎不起作用

时间:2018-06-10 20:25:38

标签: c++ sdl-2

SDL_TICKS_PASSED documentation

我无法使SDL2的“SDL_TICKS_PASSED”功能起作用,当我尝试使用它时它似乎没有返回true。

Uint32 timeout = SDL_GetTicks() + 100;
if( SDL_TICKS_PASSED(SDL_GetTicks(), timeout) )
{
    printf( "alarm triggered.............\n" );
}

只是阅读文档,我猜在100ms后函数将返回true并显示警报消息。我可能会做些傻事,但如果有人对这个问题有任何想法,请告诉我。

1 个答案:

答案 0 :(得分:1)

这里的问题是你func getPromise() -> Promise<String> { return Promise<String>.pending().promise } let promise: Promise<Any> = getPromise() 只被调用一次。它将在100个滴答之后返回Cannot convert value of type 'Promise<String>' to specified type 'Promise<Any>',但在此超时发生之前它不会阻塞。所以第一个电话会立即返回SDL_TICKS_PASSED。要实现阻塞行为,应该循环检查:

true

或使用专用等待功能false

Uint32 timeout = SDL_GetTicks() + 100;
while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout))
{
     /* wasting CPU time... */
}
// ok, 100 ticks elapsed when we get here...