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

GDK2015::アニメーション

アニメーション

基本はパラパラ漫画

  1. 背景を描く
  2. スプライトを動かす
  3. スプライトを描く
  4. 1.にもどる

GDKでアニメーション

  • タイムアウトと背景を設定する GDK2015::タイムアウト GDK2015::背景
    • タイムアウトはgtk_main()でイベント待ち中に、一定の時間間隔で関数を呼び出す
    • 背景はconfigure_eventのコールバックで設定
      • configure_eventはウィジェットが最初に作成されたときを含む、サイズが変更されたときに起こる
  1. タイムアウトの発生 GDK2015::タイムアウト
  2. 背景でクリア GDK2015::背景
  3. スプライトをドローイングエリアにコピー GDK2015::スプライト GDK2015::透明な画像

サンプル

ソースプログラムの所在
ファイルリスト
typedef struct {
  GtkWidget *drawing_area;  // スプライトを動かすフィールドに相当するドローイングエリア
  gint timeout;                      // アニメーションのタイムアウト.この時間ごとにdrawing_areaにs_pixbufが描かれる
  GdkPixbuf *s_pixbuf;         // スプライト用のピクスバッファ
  gint s_width;                 // スプライト幅
  gint s_height;                // スプライト高さ
  gint x, y, dx, dy;            // スプライトの現在位置座標,ベクトル(次のタイムアウトで進む方向)
  gint s_timeout;               // スプライト自身がアニメーションするような場合のタイムアウト.回る地球とか
  GdkPixbufAnimationIter *iter; // s_timeoutを使う場合に用いるイテレータ
} anime_pack;
  • animation.c
    • いろいろなアニメーションのサンプル.GDKでアニメーションgifを読む,ボールが動く,アニメーションgifが動く,キャラクターが動く,など.
実行手順
 #svnから持ってくる(実行した直下にanimationディレクトリができる)
 svn export https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/animation
 
 #持ってきたディレクトリに移動
 cd animation
 
 #make
 make
 
 #実行
 ./animation
参考
  • my_animation_earth()の構造


最終更新日:2015/04/24 15:30:36