!!! animation のライブラリ化 Ball/ball1/anime.{h,c} <<{anime_area.png} !! アニメーション領域 背景と領域内を動くスプライト達を描くための領域 アニメーション領域の構造 8< : typedef struct { : GtkWidget *drawing_area; //描画領域 drawing_area widget : GdkPixmap *bg_pixmap; //背景画像 pixmap : gint width; //領域の幅 : gint height; //領域の高さ : gint timeout; //スプライト達の再描画のための時間間隔 : GList *sprites; //スプライト達のリスト : } myAnimeArea; >8 アニメーション領域 API * アニメーション領域を作る 8< : myAnimeArea * : my_anime_area_new(gint width, gint height, GdkPixmap *bg_pixmap, gint timeout); >8 6< * 幅,高さ,背景画像,時間間隔 (ms) >9 * アニメーション領域を消す 8< : void : my_anime_area_remove(myAnimeArea *area); >8 !! スプライト スプライトの構造 8< : typedef struct { : myAnimeArea *anime_area; // のっかっているアニメーション領域 : gint timeout; // スプライトのタイムアウト */ : GdkPixbuf *pixbuf; // スプライト用画像(ピクスバッファ) : gint width; // 幅 : gint height; // 高さ : gint x, y, dx, dy; // 座標と増加 : } mySprite; >8 スプライトAPI * スプライトを作成する 8< : mySprite * : my_sprite_new(myAnimeArea *area, gchar *path, gint timeout); >8 6< * area: 作成されるスプライトがのる,アニメーション領域 * path: 画像ファイルへのパス * timeout: スプライトを動かす時間間隔, * 描画はアニメーション領域の再描画時に行う >9 * スプライトの位置とベクトルの初期値を決める関数 8< : void my_sprite_init(mySprite *sprite); >8 6< * 利用者が用意する >9 * スプライトを移動する関数 8< : void my_sprite_move(mySprite *sprite); >8 6< * timeout 時間間隔で呼ばれる * 利用者が用意する >9 * スプライトの消去 8< : void my_sprite_remove(mySprite *); >8