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 ; /* 定められた時間が経過したら戻る */ } }