Thursday, 06 October 2005 00:38
非洲饿鱼
|
[前一页]
目录
[后一页]
使用SDL
定时器
调用SDL_GetTicks() 可以获得从过去某个时刻到现在所经过的毫秒。
|
提示:
总的来说,在游戏开发中基于时间,而不是帧率来移动对象要更好。这样在高速系统上和在低速系统上,游戏的节奏是一致的。 |
例程::
#define TICK_INTERVAL 30
Uint32 TimeLeft(void)
{
static Uint32 next_time = 0;
Uint32 now;
now = SDL_GetTicks();
if ( next_time <= now ) {
next_time = now+TICK_INTERVAL;
return(0);
}
return(next_time-now);
}
|
SDL_Delay() 可以实现毫秒级的等待。
由于SDL支持的操作系统是多任务的,所以无法保证你的程序能够等待非常确切的一段时间。
等待相关的函数更多的是用于程序空闲一段时间,而不是在一个很确切的时刻被唤醒。
|
提示:
很多操作系统的调度时间片是10毫秒左右。调用SDL_Delay(1)将放弃当前的时间片。如果你的一个线程是很紧的循环,同时又要保持另一个线程(比如音频)运行,这就很有用。
|
例程:
{
while ( game_running ) {
UpdateGameState();
SDL_Delay(TimeLeft());
}
}
|
[前一页]
目录
[后一页]
|

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