!!! アニメーション !! 基本はパラパラ漫画 + 背景を描く + スプライトを動かす + スプライトを描く + 1.にもどる !! GDKでアニメーション * タイムアウトと背景を設定する [[GDK2016::タイムアウト]] [[GDK2016::背景]]
((img anime_01.png)) ** タイムアウトはgtk_main()でイベント待ち中に、一定の時間間隔で関数を呼び出す ** 背景はconfigure_eventのコールバックで設定 *** configure_eventはウィジェットが最初に作成されたときを含む、サイズが変更されたときに起こる + タイムアウトの発生 [[GDK2016::タイムアウト]]
((img anime_02.png)) + 背景でクリア [[GDK2016::背景]]
((img anime_03.png)) + スプライトをドローイングエリアにコピー [[GDK2016::スプライト]] [[GDK2016::透明な画像]]
((img anime_04.png)) !! サンプル ! ソースプログラムの所在 * 以下のsvnのリポジトリ ** https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/animation/ ! ファイルリスト * [gtk_lib.h|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/animation/gtk_lib.h] [gtk_lib.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/animation/gtk_lib.c] ** [[GDK2016::概要]]で解説済 * [gdk_pixbuf_lib.h|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/gdk_pixbuf/gdk_pixbuf_lib.h] [gdk_pixbuf_lib.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/gdk_pixbuf/gdk_pixbuf_lib.c] ** [[GDK2016::GdkPixbuf]]で解説済 * [animation_lib.h|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/animation/animation_lib.h] [animation_lib.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/animation/animation_lib.c] ** animationのためのライブラリ.スプライトとか. ** 以前に中谷先生が作られたものを少し変更 ** anime_pack構造体の理解が必要! 6< 8< 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; >8 >9 * [animation.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/animation/animation.c] ** いろいろなアニメーションのサンプル.GDKでアニメーションgifを読む,ボールが動く,アニメーションgifが動く,キャラクターが動く,など. ! 実行手順 8< #svnから持ってくる(実行した直下にanimationディレクトリができる) svn export https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/animation #持ってきたディレクトリに移動 cd animation #make make #実行 ./animation >8 ! 参考 * my_animation_earth()の構造 ((img my_animation_earth_09.png)) !! リンク * [[GDK2016::概要]] * [[GDK2016::GdkPixbuf]] * [[GDK2016::イベント]]