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

[SFML 2.0] wczytanie textury z pliku

Ostatnio zmodyfikowano 2013-10-06 10:19
Autor Wiadomość
Szary
Temat założony przez niniejszego użytkownika
[SFML 2.0] wczytanie textury z pliku
» 2013-10-01 18:29:39
Cześć, wszystko działało do póki, nie powkładałem tego w klasy.
Chodzi o to, że obiekt texture nie może mi wczytać textury z pliku. Przedem w main'ie wszystko działało, w ogóle nie rozumiem co się stało.

C/C++
Graphics::Graphics( const char file[], int _x, int _y, int _width, int _hight, double _fast = 0 )
    : x( _x )
    , y( _y )
    , fast( _fast )
    , width( _width )
    , hight( _hight )
{
    sf::Texture texture;
    if( texture.loadFromFile( file ) ) {
        cout << "nie mozna wczytac " << file << endl;
        return;
    }
    sprite.setTexture( texture );
}

C/C++
void Graphics::setGraphic( const char file[], int _x, int _y, int _width, int _hight, double _fast = 0 )
{
    sf::Texture texture;
    if( !texture.loadFromFile( file ) ) {
        cout << "nie mozna wczytac " << file << endl;
        return;
    }
   
    sprite.setTexture( texture );
    x = _x;
    y = _y;
    hight = _hight;
    width = _hight;
    fast = _fast;
}

C/C++
Graphics player( "graphics/gracz.png", 50, 290, 45, 60, 0 ), menu( "graphics/menu.png", 0, 0, 800, 600, 0 ),
out( "graphics/exit.jpg", 50, 550, 88, 70, 0 ), start( "graphics/start.jpg", 700, 200, 145, 79, 0 );
Pomocy, ratunku!
P-92992
Mig
» 2013-10-01 18:38:14
Nie jestem pewny czy o to chodzi , ale tworzysz obiekt chwilowy na potrzeby konstruktora texture i przekazujesz jego referencje do sprite.
Raczej to jest tego wina gdyż obiekt jest niszczony po zakonczeniu pracy konstruktora.


ps. Raczej to literówka ale w konstruktorze przy sprawdzeniu czy tekstura została wczytana gdy się to powiedzie wyświetla komunikat o błędzie,oczywiście nie ma to nic wspólnego z błędem.
P-92994
Szary
Temat założony przez niniejszego użytkownika
» 2013-10-01 18:40:08
próbowałem też na stałe tzn obiekt texture jako pole klasy ale bez zmian..
P-92996
MrPoxipol
» 2013-10-01 18:45:11
Podaj cały kod.

@down,
obiekt texture jako pole klasy ale bez zmian..
Btw to najlepiej jest zrobić ResourceManager'a,a w klasie najwyżej przechowywać referencje do tekstury (bezpieczniejsze).
P-92997
Mrovqa
» 2013-10-01 18:47:06
Przy opuszczaniu metod są niszczone wszystkie obiekty automatyczne, w tym twoje sf::Texture. Uczyń je zatem składnikiem klasy. Możesz (powinieneś) zrobić jeszcze lepiej - umieścić wskaźnik do tekstury i zaimplementować odpowiednio kopiowanie obiektu albo zablokować taką możliwość.
P-92998
Szary
Temat założony przez niniejszego użytkownika
» 2013-10-01 18:59:45
@MrPoxipol
Całe 170 lini ? rzuciłem tylko to gdzie jest problem..

Poza tym za każdym razem jest w konsoli:


nie mozna wczytac graphics/gracz.png

zrobiłem texture w polu
C/C++
class Graphics
{
public:
    double x, y;
    double fast;
    int width, hight;
   
    sf::Sprite sprite;
    sf::Texture texture;
   
    Graphics( const char[], int, int, int, int, double );
    Graphics();
    ~Graphics( void );
   
   
    void setGraphic( const char[], int, int, int, int, double );
    bool collision( Graphics enemy );
   
private:
   
};



void Graphics::setGraphic( const char file[], int _x, int _y, int _width, int _hight, double _fast = 0 )
{
   
    if( !texture.loadFromFile( file ) ) {
        cout << "nie mozna wczytac " << file << endl;
        return;
    }
   
    sprite.setTexture( texture );
    x = _x;
    y = _y;
    hight = _hight;
    width = _hight;
    fast = _fast;
}
P-93000
akwes
» 2013-10-01 19:01:38

nie mozna wczytac graphics/gracz.png
i Ty się dziwisz, że się nie wyświetla grafika tylko biały kwadrat?
P-93001
Szary
Temat założony przez niniejszego użytkownika
» 2013-10-01 19:03:44
nie ma nawet białego kwadratu.. dziwie i nie, wszystko działało i nie wiem dlaczego po wciśnięciu w klasy on tego nie może wczytać..
P-93002
« 1 » 2
  Strona 1 z 2 Następna strona