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