Simple DirectMedia Layer geeft toegang tot audio- , toetsenbord , muis , joystick , OpenGL 3 - D hardware en 2 - D video framebuffers . Gebruikt met MPEG- afspeelsoftware , emulators en andere spellen , het SDL programma is handig voor een verscheidenheid van dingen , zoals het animeren van een side scroller spel . SDL werkt met native C + + , maar werkt ook in C , Ada , C # , D , Eiffell , Erlang , Euphoria , Go , Guile , Haskell , Java , Lisp , Lua , ML , Objective C , Pascal , Perl , PHP , Pike , Pliant , Python , Ruby , Smalltalk en Tcl . Instructies 1 Maak twee nieuwe bestanden met de naam " CAnimation.h " en Voeg de volgende " onder " richtlijn " CApp.h " " CAnimation.cpp /. " : " # include " CAnimation.h ' " Open 2 " CAnimation.h " en voer de volgende code : . # ifndef _CANIMATION_H_ # define _CANIMATION_H_ # include < SDL . h > class CAnimation { private : int currentFrame ; int FrameInc ; private : int framerate ; //milliseconden lang oldtime ; public: int MaxFrames ; publiek : CAnimation ( ) ; void OnAnimate ( ) ; publiek : void SetFrameRate ( int Rate ) ; leegte SetCurrentFrame ( int Frame ) ; int GetCurrentFrame ( ) ;} ; # endif 3 Open " CAnimation.cpp " en voer de volgende code met je waarden voor frame rate : # include " CAnimation.h " CAnimation :: CAnimation ( ) { currentFrame = 0 ; MaxFrames = 0 ; FrameInc = 1 ; framerate = 100 ; //Milliseconden oldtime = 0 ; } void CAnimation :: OnAnimate ( ) { if ( oldtime + framerate > SDL_GetTicks ( ) ) { return ; } oldtime = SDL_GetTicks ( ) ; currentFrame + = FrameInc if ( FrameInc > 0 ) { if ( currentFrame > = MaxFrames - 1 ) { FrameInc = - FrameInc ; } } else {if ( currentFrame < = 0 ) { FrameInc = - FrameInc ; } } } else {if ( currentFrame > = MaxFrames - 1 ) { currentFrame = 0 ; } } } void CAnimation :: SetFrameRate ( int Rate ) { framerate = Rate ; } void CAnimation :: SetCurrentFrame ( int Frame ) { if ( Frame < 0 | | Frame > = MaxFrames ) return ; currentFrame = Frame ; } int CAnimation :: GetCurrentFrame ( ) { return currentFrame ; } 4 Teken de " currentFrame " van de side scrolling animatie door het bepalen van het deel van de oppervlakte zal trekken je naar het scherm . Bijvoorbeeld, als de animatie is 64 bij 64 pixels , zul je inbreng iets dergelijks als dit : CSurface :: handler OnDraw ( Surf_Display , Surf_Image , 0 , 0 , 0 , Animate.GetCurrentFrame ( ) op Twitter * 64 , 64 , 64 ) ; 5 weten hoeveel frames je animatie bevat , ook wel bekend als Gebruik deze code in de functie " OnAnimate " om uit te vinden de " MaxFrames " " MaxFrames . " : if ( oldtime + framerate > SDL_GetTicks ( ) ) { return ; } 6 Controleer de " Old Time " tegen de looptijd van het SDL . Als de gewenste frame rate is " 1 , " de framerate zal evenaren 1000 milliseconden . Daarom, zodra " 0 + 1000 " is kleiner dan " SDL_GetTicks , " het betekent een seconde van het frame is verstreken . Reset de " ouderwetse " om de huidige tijd . 7 Zet uw animatie in actie door het creëren van een nieuwe " CAnimation " object in " CApp.h : " CAnimation Animate ; 8 Stel de " MaxFrames " door toevoeging van de volgende code om " CApp_OnInit " en het aanpassen van de " MaxFrames " nummer naar uw voorkeur : Animate.MaxFrames = 8 ; 9 Loop de animatie met de volgende code toe te voegen aan " CApp_OnLoop : " Animate.OnAnimate ( ) ; 10 Animate het door toevoeging van deze code om " CApp_OnRender : " CSurface :: handler OnDraw ( Surf_Display , Surf_Test , 290 , 220 , 0 , Animate.GetCurrentFrame ( ) * 64 , 64 , 64 ) ; < br > |