Simple DirectMedia Layer consente l'accesso a audio, tastiera, mouse, joystick, hardware 3D OpenGL e framebuffer video 2-D. Utilizzato con software di riproduzione MPEG, emulatori e altri giochi, il programma SDL è comodo per una varietà di cose, come ad esempio l'animazione di un gioco a scorrimento laterale. SDL funziona in modo nativo con C++, ma funziona anche in C, Ada, c#, D, Eiffell, Erlang, euforia, Go, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk e Tcl.
Istruzioni
1
Creare due nuovi file chiamati "CAnimation.h" e "CAnimation.cpp/." Aggiungere il seguente "include" direttiva in "CApp.h": "#include 'CAnimation.h'."
2
Aprire "CAnimation.h" e inserire il codice riportato di seguito:
ifndef _CANIMATIONH
#define _CANIMATIONH
sono < SDL.h >
Class CAnimation {
privato:
int CurrentFrame;
int FrameInc;
privato:
int FrameRate; Millisecondi
lungo OldTime;
pubblico:
int MaxFrames;
pubblico:
CAnimation();
Sub OnAnimate();
pubblico:
void SetFrameRate (int Rate);
void SetCurrentFrame (int Frame);
int GetCurrentFrame();
};
endif 3
Aprire "CAnimation.cpp" e inserire il codice seguente con i tuoi valori per frame rate:
sono "CAnimation.h"
CAnimation::CAnimation() () {
CurrentFrame = 0;
MaxFrames = 0;
FrameInc = 1;
FrameRate = 100; Millisecondi
OldTime = 0;
}
Sub CAnimation::OnAnimate() () {
Se (OldTime + FrameRate > {SDL_GetTicks())
ritorno;
}
OldTime = SDL_GetTicks();
CurrentFrame + = FrameInc;
if(FrameInc > 0) () {
Se (CurrentFrame > = MaxFrames - 1) {
FrameInc = - FrameInc;
}
} else {
Se (CurrentFrame < = 0) {
FrameInc = - FrameInc;
}
}
} else {
Se (CurrentFrame > = MaxFrames - 1) {
CurrentFrame = 0;
}
}
}
void CAnimation::SetFrameRate (int tasso) {
FrameRate = tasso;
}
void CAnimation::SetCurrentFrame (int Frame) {
Se (Frame < 0 | | Telaio > = MaxFrames) return;
CurrentFrame = telaio;
}
int CAnimation::GetCurrentFrame() () {
ritorno CurrentFrame;
}
4
Disegnare il "CurrentFrame" del lato scorrimento animazione determinando la parte della superficie che si attingerà alla schermata. Per esempio, se l'animazione è di 64 x 64 pixel, potrai inserire qualcosa di simile a questo:
CSurface::OnDraw (Surf_Display, Surf_Image, 0, 0, 0, Animate.GetCurrentFrame() * 64, 64, 64);
5
Sapere quanti fotogrammi dell'animazione contiene, noto anche come "MaxFrames". Utilizzare questo codice nella funzione "OnAnimate" per scoprire il "MaxFrames":
Se (OldTime + FrameRate > {SDL_GetTicks())
ritorno;
}
6
Controllare la "Old Time" contro il tempo di esecuzione del processo SDL. Se il frame rate desiderato è "1", il FrameRate sarà uguale a 1.000 millisecondi. Quindi, una volta "0 + 1.000" è minore di "SDL_GetTicks", vuol dire un secondo del telaio ha superato. Reimpostare il "OldTime" al tempo corrente.
7
Mettere l'animazione in azione creando un nuovo oggetto "CAnimation" in "CApp.h:"
CAnimation Animate;
8
Impostare il "MaxFrames" aggiungendo il codice seguente al "CApp_OnInit" e la regolazione del numero di "MaxFrames" per la vostra preferenza:
Animate.MaxFrames = 8;
9
Ciclo dell'animazione con il seguente codice aggiungere a "CApp_OnLoop:"
Animate.OnAnimate();
10
Animarlo aggiungendo questo codice per "CApp_OnRender:"
CSurface::OnDraw (Surf_Display, Surf_Test, 290, 220, 0, Animate.GetCurrentFrame() * 64, 64, 64);