2012-04-22 6 views
3

LinuxでCとGTKを使って基本的なスロットマシンシミュレーションを書いた。スロットマシンは5リールであり、各リールは3つのシンボルを有する。回転動作を「アニメート」するには、GtkImagesの配列3,5を使用したアニメーションGIFを使用しています。2DスロットマシンタイプのアニメーションGTK +

実際には、各リールに対して垂直アニメーションが行われる適切なスロットマシンのように見せたいと思います。私はリールのシンボルからpixmapまたはpixbufを作成する必要があると思いますが、g_timer_add()を使ってGtkImage上のピクスマップの可視部分を変更してください。私はGtk +を初めて使っています。誰かがこのタイプのアニメーションや良いドキュメントの簡単な例を持っていれば、私は永遠に感謝しています。

ありがとうございます。

+0

私は、このためにゲームプログラミングツールキットを使用する方が良いかもしれないと思います... – ptomato

答えて

1

GtkImageの代わりにGtkDrawingAreaを使用すると、必要に応じて描画できます。まるであなたがリールを展開したかのように、可能なすべての画像を垂直のPNG画像に入れます。次にこれをpixbufにロードし、カイロを使ってサーフェスを作成します。カイロを使用して大きな画像の小さなサブセットを描画するだけで、大きな画像に垂直方向のオフセットで参照できます。 g_timer_addのタイマーを使用して、1秒間に十分なフレームでリフレッシュさせる(必要な速度を計算する)。タイマーのコールバックを当然とらえないでください。コールバックが遅れることがあります。 GTimerを使用し、リールを回転させたい時に開始し、GTimerを起動してからの経過時間をg_timer_addコールバックで測定することで、最高の結果が得られます。これにより、画像へのオフセットを計算することができます。

+0

詳細なお役立ち情報ありがとうございました。 – Chimera

+0

BTWでは、GtkDrawingAreaを描画するために、ウィジェットサイズの変更を追跡するconfigureイベントと、描画を処理するための「expose-event」(GTK2の場合)または「draw」イベント(GTK3の場合)を表示します。 – liberforce

関連する問題