Previous: 「タイマー」の機能
Up: Xウィンドウ概論
第9回 アニメーションを作ろう
Previous Page: 「タイマー」の機能
Next Page: Xウィンドウ実習
第9回 応用編 アニメーションを作る
#include<sys/time.h> /* タイマーを使用するために必要 */
#include "anime0" /* 絵のデータ・ファイルを多数用意 */
#include "ainme1"
#include "anime2"
#include "anime3"
:
void timer( int ); /* タイマーの関数の宣言 */
main( int argc, char **argv )
{
:
:
while( True ) /* イベント処理のループ */
{
:
case ButtonPress:
for( i=0 ; i<PIX_NUM ; i++ ) /* 絵を次々と描くためのループ */
{
XCopyArea( dsp, pix[i], win, gc,
0, 0, anime0_width, anime0_height, 16, 25 );
XFlush( dsp );
timer( 200000 ); /* 適当な時間休む */
}
:
} /* イベント処理ループの終わり */
} /* main の終わり */
/* タイマーの関数の本体 */
void timer( int interval ) /* 時間間隔をマイクロ秒単位で指定 */
{
struct timeval old_time, new_time; /* 時刻の値を記憶する構造体 */
gettimeofday( &old_time, NULL ); /* スタートの時刻を設定 */
while( True ) /* 時間が経過したかどうか繰り返し調べるためのループ */
{
gettimeofday( &new_time, NULL ); /* 時刻を調べる */
if( new_time.tv_sec > old_time.tv_sec )
new_time.tv_usec += 1000000;
if( new_time.tv_usec - old_time.tv_usec > interval )
return ; /* 定められた時間が経過したら戻る */
}
}