[SFML] Błąd z czyszczeniem ekranu.
Ostatnio zmodyfikowano 2013-08-01 15:39
domin568 Temat założony przez niniejszego użytkownika |
[SFML] Błąd z czyszczeniem ekranu. » 2013-08-01 14:36:24 Witam , stworzyłem manu , jest już w 100 % skończone , zapisałem sobie je w funkcji bool menu( sf::RenderWindow & ); Wygląda ona tak : bool menu( sf::RenderWindow & okno ) { sf::Event zdarzenie; sf::Texture backgroundTex; backgroundTex.loadFromFile( "menu.jpg" ); sf::Sprite menu; menu.setTexture( backgroundTex ); Button start( 325, 230, 150, 60, "START" ); Button wyjscie( 290, 310, 215, 60, "WYJSCIE" ); while( okno.isOpen() ) { while( okno.pollEvent( zdarzenie ) ) { sf::Vector2f posMouse( sf::Mouse::getPosition( okno ).x, sf::Mouse::getPosition( okno ).y ); start.inRectangle( posMouse ); wyjscie.inRectangle( posMouse ); if( zdarzenie.type == sf::Event::Closed ) { okno.close(); return false; } if( zdarzenie.type == sf::Event::MouseButtonReleased && wyjscie.inRectangle( posMouse ) == true ) { okno.close(); return false; } if( zdarzenie.type == sf::Event::MouseButtonReleased && start.inRectangle( posMouse ) == true ) { return true; } } okno.draw( menu ); wyjscie.RysujPrzycisk( okno ); start.RysujPrzycisk( okno ); okno.display(); } }
Wchodze w moje menu , klikam na przycisk (jest uaktywniony stan kliknięcia , czyli ma niebieska obwódke ) , wtedy powinno mnie przenieść do funkcji głównej (main) bo ta funkcja się już skończyła int _tmain( int argc, _TCHAR * argv[] ) { sf::RenderWindow okno( sf::VideoMode( 800, 600, 32 ), "Pierwsze menu" ); if( menu( okno ) == true ) { gra( okno ); } return 0; }
Wtedy przenosi mnie do mojej funkcji "gra" bool gra( sf::RenderWindow & okno ) { sf::RectangleShape kwadrat; kwadrat.setPosition( 400, 300 ); kwadrat.setSize( sf::Vector2f( 50, 60 ) ); sf::Event zdarzenie; while( okno.isOpen() ) { while( okno.pollEvent( zdarzenie ) ) { sf::Vector2f posMouse( sf::Mouse::getPosition( okno ).x, sf::Mouse::getPosition( okno ).y ); if( zdarzenie.type == sf::Event::Closed ) { okno.close(); return true; } } } okno.clear( sf::Color( 255, 0, 0, 255 ) ); okno.draw( kwadrat ); okno.display(); }
I na ekranie zostaje tak jakby screenshot ostatniej klatki z funkcji "menu" czyli że menu nie jest już aktywne , nie moge klikać przycisków , lecz w funkcji gra próbuje rysować nawet zwykły kwadrat i nie daje rady , próbuje czyścić ekran ale na nic się to zdaje , czy wogóle mój sposób jest dobry i czy tak można robić w SFML ? |
|
Mrovqa |
» 2013-08-01 15:24:00 W funkcji menu nie czyścisz okna. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-01 15:32:18 Dopisałem okno.clear() przed rysowaniem wszystkich obiektów w funkcji menu , to nie czyśći :( , gdzie bym tego nie wpisał to nic się nie stanie . |
|
Mrovqa |
» 2013-08-01 15:37:05 W funkcji gra rysowanie (a więc czyszczenie też!) masz poza pętlą. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2013-08-01 15:39:57 Wielkie DZIĘKI !! ależ banalny błąd ... Pewnie ten błąd wyniknął ze złego przekopiowania pętli , bo kopiowałem z funkcji menu . |
|
« 1 » |