ソフトウェア設計及び演習2016

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 *);


最終更新日:2015/03/05 10:01:18