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. 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 ); }
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; }
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! |
|
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. |
|
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.. |
|
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). |
|
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ść. |
|
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 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; }
|
|
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? |
|
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ć.. |
|
« 1 » 2 |