Nie bardzo wiem, jak to uczynic korzystajac z konkretnych metod tego, z czego Ty korzystasz. Takze napisze Ci w DX, zebys zlapal zasade.
Chodzi o to, zeby wczytac obrazek posiadajacy kolejne klatki animacji kolo siebie [najlepiej w jednym rzedzie], o szerokosci, powiedzmy w i wysokosci h. Nastepnie z kazda klatka kopiujemy obrazek znajdujacy sie na nrKlatki*w. To cala filozofia. Mniej wiecej tak to wyglada:
//zakladam ze masz wczytane w DX wszystko co trzeba i kopiujesz do aktualnej powierchni, w glownej petli gry, a klatek jest 25
int nrKlatki = 0;
for(..) {
...
if(nrKlatki++ < 25)
{
Ekran->Blt(0, 0, PowierzchniaZObrazkiem, Rect, DDBLTFAST_WAIT) ;
}
else
nrKlatki = 0;
}
Powyzsza funkcja skopiuje z powierchni "PowierzchniaZObrazkiem" Prostokat o podanych parametrach "Rect" na "Ekran", czekajac na znak, kiedy urzadzenie bedize wolne ( o tym mowi flaga DDBLTFAST_WAIT)
- Drugi sposob jest taki aby wczytac kilka obrazkow, albo na poczatku gry podzielic obrazek wczesniejszy te sama metoda i wrzucic kolejene klatki do tablicy. Gyy zrobisz tak, otrzymasz tablice np frames[] o dlugosci 25;
i w glownej petli gry robisz to samo:
//nie nzam konkretnej impelmentacji, zakladam, ze istnieje funkcja Draw(ktora rysuje bitmape na wspolrzednych x, y
int nrKlatki = 0;
if(nrKlatki++ < 25)
Canvas->Draw(0, 0, frames[nrKlatki]);
else
nrKlatki = 0;
Ot i cala filozofia. Jakbys mial dalsze pytania to pisz.