Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 1.6] Przewijanie tła

Ostatnio zmodyfikowano 2012-07-24 06:50
Autor Wiadomość
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.
P-60756
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):

C/C++
#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;
}
P-60961
1 « 2 »
Poprzednia strona Strona 2 z 2