2012-04-22 7 views
3

리눅스에서 C와 GTK를 사용하여 기본 슬롯 머신 시뮬레이션을 작성했습니다. 슬롯 머신은 각 릴에 3 개의 심볼이있는 5 개의 릴입니다. 회전 동작을 "애니메이션"하려면 GtkImages 배열 3,5가있는 애니메이션 GIF 만 사용합니다.2D 슬롯 머신 타입 애니메이션 GTK +

실제로 각 슬롯마다 수직 애니메이션이 이루어진 슬롯 머신처럼 보이게하고 싶습니다. 릴 상에있는 심볼로부터 픽스맵이나 픽스buf를 만들 필요가 있다고 생각합니다. g_timer_add()를 사용하여 GtkImage에서 픽스맵의 가시적 인 부분을 변경하십시오. 저는 Gtk +에 익숙하지 않습니다. 만약 누군가이 유형의 애니메이션이나 좋은 문서에 대한 간단한 예제를 가지고 있다면, 영원히 감사 할 것입니다.

감사합니다.

+0

게임 프로그래밍 툴킷을 사용하면 더 좋을 것 같습니다. – ptomato

답변

1

GtkImage 대신 GtkDrawingArea를 사용하여 원하는대로 그릴 수 있습니다. 릴을 펼쳤다면 가능한 모든 이미지를 수직 PNG 이미지에 넣으십시오. 그런 다음 이것을 pixbuf에로드하고 카이로를 사용하여 서페이스를 만듭니다. 카이로를 사용하여 큰 이미지의 작은 하위 집합을 그리면됩니다.이 큰 이미지의 수직 오프셋으로 참조 할 수 있습니다. g_timer_add와 함께 타이머를 사용하여 초당 충분한 프레임으로 새로 고칩니다 (필요한 속도를 계산하십시오). 타이머 콜백을 당연시하지 마십시오. 콜백 발생이 지연 될 수 있습니다. 가장 좋은 것은 GTimer를 사용하여 릴을 회전시키고 싶은 시간에 시작하고, gimer_add 콜백에서 GTimer를 시작한 이후 경과 한 시간을 측정합니다. 이렇게하면 이미지 오프셋을 계산할 수 있습니다.

+0

감사합니다. – Chimera

+0

BTW에서는 GtkDrawingArea를 그리기 위해 위젯 크기 변경 사항을 추적하고 GTK2의 경우 "expose-event"또는 GTK3의 경우 "draw"이벤트를 사용하여 드로잉을 처리하도록 configure 이벤트를 살펴 봅니다. – liberforce