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

maruyama@wakhok.ac.jp
1995年02月01日 (水) 00時21分18秒 JST