[SFML 1.6] Przewijanie tła
Ostatnio zmodyfikowano 2012-07-24 06:50
diego997 |
» 2012-07-21 12:51:45 To, to co ci napisałem doskonale się sprawdzi i wydaje mi się, że jest najprostszym rozwiązaniem.
Sprawdź a się przekonasz jeżeli będziesz miał spore problemy to znaczy, że niezbyt dokładnie przeczytałeś dokumentację odnośnie sf::View. |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2012-07-24 06:50:25 Problem scrollowania rozwiazałem w taki oto sposób (gotowiec):
#include <SFML/Graphics.hpp>
const int EKRAN_W = 640; const int EKRAN_H = 480;
class Obrazek { public: int x, y, w, h, bx, by; sf::Sprite spr; sf::Image img; void LadujImg( char * nazwa ); void ZmienWycinke( int xx, int yy, int ww, int hh ); }; void Obrazek::LadujImg( char * nazwa ) { img.LoadFromFile( nazwa ); spr.SetImage( img ); } void Obrazek::ZmienWycinke( int xx, int yy, int ww, int hh ) { bx = xx; by = yy; w = ww; h = hh; spr.SetSubRect( sf::IntRect( bx, by, bx + w, by + h ) ); }
int main() { sf::RenderWindow App( sf::VideoMode( EKRAN_W, EKRAN_H, 32 ), "RazzorFlame" ); Obrazek ob1, ob2; ob1.x = 0; ob1.y = 0; ob1.h = 480; ob1.w = 640; ob1.bx = 0; ob1.by = 0; ob2.x = 0; ob2.y = - 480; ob2.w = 640; ob2.h = 480; ob2.bx = 0; ob2.by = 0; ob1.LadujImg( "tlo.bmp" ); ob2.LadujImg( "tlo.bmp" ); sf::Clock timertlo; timertlo.Reset(); ob1.ZmienWycinke( ob1.bx, ob1.by, ob1.w, ob1.h ); ob1.ZmienWycinke( ob2.bx, ob2.by, ob2.w, ob2.h ); sf::Event Event; while( App.IsOpened() ) { while( App.GetEvent( Event ) ) { if( Event.Type == sf::Event::Closed ) App.Close(); } if( ob1.y >= 480 ) ob1.y = - 480; if( ob2.y >= 480 ) ob2.y = - 480; if( timertlo.GetElapsedTime() >= 0.05 ) ob1.y++, ob2.y++, timertlo.Reset(); ob1.spr.SetPosition( ob1.x, ob1.y ); ob2.spr.SetPosition( ob2.x, ob2.y ); App.Clear(); App.Draw( ob1.spr ); App.Draw( ob2.spr ); App.Display(); } return 0; }
|
|
1 « 2 » |