[SFML 2.0] Wyświetlanie sprajta i zmiana jego pozycji
Ostatnio zmodyfikowano 2013-06-26 21:56
korkoran Temat założony przez niniejszego użytkownika |
[SFML 2.0] Wyświetlanie sprajta i zmiana jego pozycji » 2013-06-26 21:47:17 Witam, Postanowiłem zapoznać się z SFML 2.0. Nie miałem wcześniej doświadczenia z bibliotekami tego typu. Przerobiłem poradnik dostępny na cpp0x.pl i wszystko co tam było opisywane działa poprawnie. Problem pojawia się gdy dodaje zestaw komend, dzięki którym sprite poruszałby się w zależności os naciskanych strzałek. Problem leży w tym, że program nie wykazuje żadnej aktywności gdy naciskam strzałki. Wszystkie inne komendy działają bez problemu. Poniżej zamieszczam kod: #include <SFML/Window.hpp> #include <SFML/Graphics.hpp>
int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "SFML - test" ); while( oknoAplikacji.isOpen() ) { sf::Texture tekstura; tekstura.loadFromFile( "obrazek.png" ); sf::Sprite sprajt; sprajt.setTexture( tekstura ); sf::Event zdarzenie; while( oknoAplikacji.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::Closed ) oknoAplikacji.close(); if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape ) oknoAplikacji.close(); if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Right ) sprajt.move( 50, 0 ); if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Left ) sprajt.move( - 50, 0 ); if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Up ) sprajt.move( 0, 50 ); if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Down ) sprajt.move( 0, - 50 ); } oknoAplikacji.clear( sf::Color( 155, 100, 128 ) ); sprajt.setPosition( 20, 50 ); sprajt.setScale( 0.25, 0.25 ); oknoAplikacji.draw( sprajt ); oknoAplikacji.display(); } return 0; }
|
|
akwes |
» 2013-06-26 21:49:57 sf::Texture tekstura; tekstura.loadFromFile( "obrazek.png" ); sf::Sprite sprajt; sprajt.setTexture( tekstura );
Czy jesteś pewien, że ten kod powinien się wykonywać w każdym obiegu pętli? Podpowiem, że czy aby na pewno chcesz aby w każdym obiegu pętli tworzyć teksturę, wczytywać ją, tworzyć nowy obiekt sprite z nową czystą wartością pozycji? Co więcej, cały czas ustalasz pozycję tego sprita na stałe. sprajt.setPosition( 20, 50 );
Obrazując: A.ZMIEN_POZYCJE( - 50 ); A.USTAW_POZYCJE( 100 ); A.RYSUJ;
Lub: i = i - 10; i = 20; std::cout << i;
:) |
|
korkoran Temat założony przez niniejszego użytkownika |
» 2013-06-26 21:56:45 Akwes: Oczywiście masz rację :). Teraz wszystko działa tak jak trzeba - nie do końca zrozumiałem podczas poradnika idee pętli głównej, ale już teraz ogarniam to trochę bardziej. Dziękuję. |
|
« 1 » |