Kontener obiektów, SFML
Ostatnio zmodyfikowano 2014-01-29 15:18
kubawal |
» 2014-01-28 19:47:49 texture.push_back( sf::Texture );
|
Powinno być texture.push_back( sf::Texture() ); Poza tym większość obiektów w SFML nie przechowuje się w kontenerach, tylko tworzy się je w pam. wolnej, a w kontenerach przechowuje się wskaźniki do nich vector < sf::Sprite *> objs;
sf::Sprite * costam = new sf::Sprite; objs.push_bask( costam );
Nie zapomnij o usunięciu wszystkich elementów objs, kiedy przestaną być potrzebne. |
|
Vesper7 Temat założony przez niniejszego użytkownika |
» 2014-01-28 20:14:49 nie za bardzo mi poszło, ale też nie wiem czy to dobrze zastosowałem #include <SFML/Graphics.hpp> #include <vector> #include <string>
int main() { sf::RenderWindow window( sf::VideoMode( 1600, 1200 ), "GFX" ); std::vector < sf::Sprite *> sprite; std::vector < sf::Texture *> texture; std::string nazwa; for( int i = 0; i < 3; i++ ) { sf::Sprite * s_schowek = new sf::Sprite(); sf::Texture * t_schowek = new sf::Texture(); texture.push_back( s_schowek ); nazwa = "GFX/"; nazwa +=( i + '0' ); nazwa += ".png"; texture[ i ].loadFromFile( nazwa.c_str() ); sprite.push_back( t_schowek ); sprite[ i ].setTexture( texture[ i ] ); delete s_schowek; delete t_schowek; } while( window.isOpen() ) { sf::Event event; while( window.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) window.close(); if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Return ) window.close(); } window.clear( sf::Color::White ); window.draw( sprite[ 2 ] ); window.display(); } return 0; }
Wywala błędy niestety |
|
kubawal |
» 2014-01-28 20:33:12 delete s_schowek; delete t_schowek;
|
Źle mnie zrozumiałeś. Obiekty usuwasz na końcu, kiedy nie będą potrzebne i nie będziesz ich już rysował. |
|
Vesper7 Temat założony przez niniejszego użytkownika |
» 2014-01-28 20:41:36 niestety błędy dalej te same |
|
RazzorFlame |
» 2014-01-28 23:04:43 texture.push_back( s_schowek ); sprite.push_back( t_schowek );
|
Coś ci sie porąbało ;) |
|
Vesper7 Temat założony przez niniejszego użytkownika |
» 2014-01-29 11:47:03 sorki faktycznie pomieszałem troszeczkę ale niestety dalej nie gra pobawiłem się jeszcze dzisiaj chwilkę i teraz mi wywala błędy już po uruchomieniu a stanąłem na czymś takim: #include <SFML/Graphics.hpp> #include <vector> #include <string> #include <iostream>
int main() { sf::RenderWindow window( sf::VideoMode( 600, 600 ), "GFX" ); std::vector < sf::Sprite *> sprite; std::vector < sf::Texture *> texture; std::string nazwa; for( int i = 0; i < 2; i++ ) { sf::Texture * t_schowek; texture.push_back( t_schowek = new sf::Texture() ); std::cout << texture.size() << std::endl; delete t_schowek; nazwa = "GFX/"; nazwa +=( i + '0' ); nazwa += ".png"; texture[ i ]->loadFromFile( nazwa.c_str() ); sf::Sprite * s_schowek; sprite.push_back( s_schowek = new sf::Sprite() ); std::cout << sprite.size() << std::endl; delete s_schowek; sprite[ i ]->setTexture( * texture[ i ] ); } while( window.isOpen() ) { sf::Event event; while( window.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) window.close(); if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Return ) window.close(); } window.clear( sf::Color::White ); window.draw( * sprite[ 2 ] ); window.display(); } return 0; }
a i jak by co obiekty usuwam po przebiegu pętli żeby się inne obrazki do kolejnych elementów ładowały a nie te same a oto co mi debugger wywala http://prntscr.com/2nl8d9sam za bardzo nie wiem o co mu chodzi |
|
RazzorFlame |
» 2014-01-29 12:45:54 Co ty, chłopie! Z choinki żeś się urwał? Ten vector teraz przyjmuje WSKAŹNIKI a nie obiekty! Nie kopiujesz do vectora tych obiektów tylko same wskaźniki! OBIEKTY TEKSTUR MUSZĄ ZOSTAĆ W PAMIĘCI DOPÓKI WYKORZYSTUJESZ WSKAŹNIKI NA NIE POKAZUJĄCE! Dlaczego więc usuwasz obiekt t_schowek i s_schowek? Poczytaj o działaniu wskaźników i dopiero bierz się za takie rzeczy. |
|
Vesper7 Temat założony przez niniejszego użytkownika |
» 2014-01-29 13:10:11 Faktycznie jeszcze wskaźników nie opanowałem, to też się z nimi jeszcze postaram zaznajomić, wiec się jeszcze spytam czy innego sposobu zatem nie ma do powkładania tych tekstur do tego vectora niż korzystanie ze wskaźników ?? |
|
1 « 2 » 3 |