.kqm Temat założony przez niniejszego użytkownika |
[SFML 2.1] Funkcja draw w Evencie. » 2014-02-02 00:22:22 Witam. Mam problem, mianowicie, gdy próbuje wywołać funkcję: while( oknoAplikacji.isOpen() ) { sf::Event zdarzenie; while( oknoAplikacji.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button == sf::Mouse::Left ) { oknoAplikacji.draw( start ); } } }
To nie pojawia się obrazek start. Gdy próbuje go otworzyć poza zdarzeniem, to wszystko ładnie się wyświetla, co może być przyczyną? |
|
kryCHa |
» 2014-02-02 00:26:34 Musisz dodać funkcję oknoAplikacji.display(); |
|
.kqm Temat założony przez niniejszego użytkownika |
» 2014-02-02 00:32:30 Gdy dodałem funkcję oknoAplikacji.display(); to obrazek pojawia się, ale na ułamek sekundy. |
|
kryCHa |
» 2014-02-02 00:45:04 Ponieważ najpewniej dodajesz to w evencie, gdzie jeżeli puścisz lewy przycisk myszki obrazek znika. Umieść oknoAplikacji.display() poza while( oknoAplikacji.pollEvent( zdarzenie ) ) |
|
.kqm Temat założony przez niniejszego użytkownika |
» 2014-02-02 00:58:47 Jest tak: #include <iostream> #include <SFML/Graphics.hpp>
int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 1600, 1200, 32 ), "Gra", sf::Style::Fullscreen ); sf::Texture teksturastart; sf::Texture teksturatlo; teksturastart.loadFromFile( "start.png" ); teksturatlo.loadFromFile( "tlo3.png" ); sf::RectangleShape tlo; tlo.setSize( sf::Vector2f( oknoAplikacji.getSize().x, oknoAplikacji.getSize().y ) ); tlo.setTexture( & teksturatlo ); tlo.setPosition( 0, 0 ); sf::RectangleShape start; start.setSize( sf::Vector2f( oknoAplikacji.getSize().x / 4.5, oknoAplikacji.getSize().y / 10 ) ); start.setTexture( & teksturastart ); start.setPosition( 200, 770 ); while( oknoAplikacji.isOpen() ) { sf::Event zdarzenie; while( oknoAplikacji.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::Closed ) { oknoAplikacji.close(); } if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left ) { oknoAplikacji.draw( start ); } } oknoAplikacji.draw( tlo ); oknoAplikacji.display(); } return 0; } Gdy dam oknoAplikacji.display() poza while( oknoAplikacji.pollEvent( zdarzenie ) ) to nic się nie wyświetla. |
|
kubawal |
» 2014-02-02 09:58:06 Bo wyświetlasz obrazek pod tłem... oknoAplikacji.draw( tlo );
|
daj przed pętla zdarzeń. |
|
.kqm Temat założony przez niniejszego użytkownika |
» 2014-02-02 10:38:11 Dałem oknoAplikacji.draw( tlo ); przed pętlą zdarzeń i nadal się pojawia na ułamek sekundy. ;/ #include <iostream> #include <SFML/Graphics.hpp>
int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 1600, 1200, 32 ), "Gra", sf::Style::Fullscreen ); sf::Texture teksturastart; sf::Texture teksturatlo; teksturastart.loadFromFile( "start.png" ); teksturatlo.loadFromFile( "tlo3.png" ); sf::RectangleShape tlo; tlo.setSize( sf::Vector2f( oknoAplikacji.getSize().x, oknoAplikacji.getSize().y ) ); tlo.setTexture( & teksturatlo ); tlo.setPosition( 0, 0 ); sf::RectangleShape start; start.setSize( sf::Vector2f( oknoAplikacji.getSize().x / 4.5, oknoAplikacji.getSize().y / 10 ) ); start.setTexture( & teksturastart ); start.setPosition( 200, 770 ); while( oknoAplikacji.isOpen() ) { oknoAplikacji.draw( tlo ); sf::Event zdarzenie; while( oknoAplikacji.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::Closed ) { oknoAplikacji.close(); } if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left ) { oknoAplikacji.draw( start ); } } oknoAplikacji.display(); } return 0; }
|
|
ShadowkhaN |
» 2014-02-02 10:52:14 Musisz wywolac jeszcze funkcje oknoAplikacji.clear(); zobacz sobie w necie podstawowy szkielet pisania w sfml |
|
« 1 » 2 |