[SFML 1.6] Scrollowanie tła w pionie i poziomie
Ostatnio zmodyfikowano 2012-07-10 11:22
wojownik266 Temat założony przez niniejszego użytkownika |
[SFML 1.6] Scrollowanie tła w pionie i poziomie » 2012-07-10 11:22:04 Znalazłem w necie kawałek kodu do skrolowania tła w poziomie i zrobiłem z tego mały programik, który prezentuję poniżej. Program przewija tło z małą przerwą pomiędzy zdjęciami. 1. Jak zmodyfikować ten program aby przewijał tło płynnie? 2. I jakie poprawki nanieść aby płynnie przewijał tło w pionie np: z góry do dołu?
Wiem że to mój problem który powinienem sam rozwiązać ale poziom mojej wiedzy o SFML jeszcze mi na to nie pozwala. Są to moje pierwsze kroki...
#include <SFML/Graphics.hpp> #include <vector> #include <iostream> using namespace std;
const int SCREEN_H = 480; const int SCREEN_W = 640;
int main() { sf::RenderWindow App; App.Create( sf::VideoMode( SCREEN_W, SCREEN_H ), "SFML_SCROLLING_BACKGROUND" ); App.SetFramerateLimit( 240 ); App.UseVerticalSync( false ); vector < sf::Image > zdjecie( 2 ); vector < sf::Sprite > Background( 2 ); for( int i = 0; i < 2; ++i ) if( !zdjecie[ i ].LoadFromFile( "gwiazdy.jpg" ) ) return EXIT_FAILURE; for( int i = 0; i < 2; ++i ) { Background[ i ].SetImage( zdjecie[ 0 ] ); Background[ i ].Resize( SCREEN_W, SCREEN_H ); } float ElapsedTime = App.GetFrameTime(); while( App.IsOpened() ) { sf::Event Event; while( App.GetEvent( Event ) ) { if( Event.Type == sf::Event::Closed ) App.Close(); if(( Event.Type == sf::Event::KeyPressed ) &&( Event.Key.Code == sf::Key::Escape ) ) App.Close(); } if(( Background[ 0 ].GetPosition().x + Background[ 0 ].GetSize().x ) < 0 ) { Background[ 0 ].SetPosition( int( Background[ 1 ].GetPosition().x + Background[ 1 ].GetSize().x ), 0 ); Background[ 1 ].SetPosition( int( Background[ 0 ].GetPosition().x - Background[ 0 ].GetSize().x ), 0 ); std::cout << Background[ 0 ].GetPosition().x << "\t" << Background[ 1 ].GetPosition().x << "\t CHECK 0" << std::endl; } if(( Background[ 1 ].GetPosition().x + Background[ 1 ].GetSize().x < 0 ) ) { Background[ 1 ].SetPosition( int( Background[ 0 ].GetPosition().x + Background[ 0 ].GetSize().x ), 0 ); Background[ 0 ].SetPosition( int( Background[ 1 ].GetPosition().x - Background[ 1 ].GetSize().x ), 0 ); std::cout << Background[ 1 ].GetPosition().x << "\t" << Background[ 0 ].GetPosition().x << "\t CHECK 1" << std::endl; } Background[ 0 ].Move( - 1, 0 ); Background[ 1 ].Move( - 1, 0 ); App.Clear(); for( int i = 0; i < 2; ++i ) App.Draw( Background[ i ] ); App.Display(); } return EXIT_SUCCESS; }
|
|
« 1 » |