domin568 Temat założony przez niniejszego użytkownika |
[SFML] Problem z przesunięciem widoku za pomocą myszki » 2014-02-13 12:25:01 Witam, chciałem napisać prosty program z wykorzystaniem zdefiniowanego widoku przez siebie (żeby móc go zoomować i przesuwać), jednak debugger wyrzuca mnie przy linijce : if( event.type == sf::Event::MouseButtonPressed ) (żadnego błędu kompilacji), oraz moja aplikacja się nie uruchamia, nie mam żadnego komunikatu typu AccessViolationException (piszę na Macu, nie znam się na tym systemie jeszcze ) Tutaj kod : #include <SFML/Audio.hpp> #include <SFML/Graphics.hpp> #include <iostream> #include "ResourcePath.hpp"
int main( int, char const ** ) { sf::Event event; sf::RenderWindow window( sf::VideoMode( 800, 600 ), "SFML window" ); sf::Sprite image; sf::Texture imageTex; imageTex.loadFromFile( resourcePath() + "757-11.jpg" ); image.setTexture( imageTex ); window.setFramerateLimit( 60 ); sf::View widok; widok.setCenter( 0, 0 ); widok.setSize( window.getSize().x, window.getSize().y ); sf::Vector2f vecMove( 0, 0 ); sf::Vector2f positionMouseAfterClick( 0, 0 ); while( window.isOpen() ) { sf::Vector2f posMouse( sf::Mouse::getPosition( window ).x, sf::Mouse::getPosition( window ).y ); if( sf::Mouse::isButtonPressed( sf::Mouse::Button::Left ) ) { widok.move( posMouse.x - positionMouseAfterClick.x, posMouse.y - positionMouseAfterClick.y ); } while( window.pollEvent( event ) ) { if( event.type == sf::Event::MouseButtonPressed ) { positionMouseAfterClick.x = posMouse.x; positionMouseAfterClick.y = posMouse.y; } } window.clear(); window.setView( widok ); window.draw( image ); window.display(); } return EXIT_SUCCESS; }
|
|
pekfos |
» 2014-02-15 16:17:04 |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2014-02-17 15:57:31 #include <SFML/Audio.hpp> #include <SFML/Graphics.hpp> #include <iostream> #include "ResourcePath.hpp"
int main( int, char const ** ) { sf::Event event; sf::RenderWindow window( sf::VideoMode( 800, 600 ), "SFML window" ); sf::Sprite image; sf::Texture imageTex; imageTex.loadFromFile( resourcePath() + "757-11.jpg" ); image.setTexture( imageTex ); window.setFramerateLimit( 60 ); window.setVerticalSyncEnabled( true ); sf::View widok; widok.setCenter( 0, 0 ); widok.setSize( window.getSize().x, window.getSize().y ); sf::Vector2f vecMove( 0, 0 ); sf::Vector2f positionMouseAfterClick( 0, 0 ); while( window.isOpen() ) { sf::Vector2f posMouse( sf::Mouse::getPosition( window ).x, sf::Mouse::getPosition( window ).y ); if( sf::Mouse::isButtonPressed( sf::Mouse::Button::Left ) ) { widok.move( posMouse.x - positionMouseAfterClick.x, posMouse.y - positionMouseAfterClick.y ); } while( window.pollEvent( event ) ) { if( event.type == sf::Event::MouseButtonPressed ) { positionMouseAfterClick.x = posMouse.x; positionMouseAfterClick.y = posMouse.y; widok.setCenter( positionMouseAfterClick.x, positionMouseAfterClick.y ); } if( event.type == sf::Event::MouseButtonReleased ) { positionMouseAfterClick.x = widok.getCenter().x; positionMouseAfterClick.y = widok.getCenter().y; } if( event.type == sf::Event::MouseWheelMoved && event.mouseWheel.delta > 0 ) { std::cout << event.mouseWheel.delta << std::endl; widok.zoom( 1.1 ); } if( event.type == sf::Event::MouseWheelMoved && event.mouseWheel.delta < 0 ) { std::cout << event.mouseWheel.delta << std::endl; widok.zoom( 0.9 ); } if( sf::Keyboard::isKeyPressed( sf::Keyboard::Key::W ) ) { widok.move( 0, - 20 ); } if( sf::Keyboard::isKeyPressed( sf::Keyboard::Key::S ) ) { widok.move( 0, 20 ); } if( sf::Keyboard::isKeyPressed( sf::Keyboard::Key::D ) ) { widok.move( 20, 0 ); } if( sf::Keyboard::isKeyPressed( sf::Keyboard::Key::A ) ) { widok.move( - 20, 0 ); } if( event.type == sf::Event::Closed ) { window.close(); } if( event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape ) { window.close(); } } window.clear(); window.setView( widok ); window.draw( image ); window.display(); } return EXIT_SUCCESS; }
|
|
DejaVu |
» 2014-02-17 17:07:03 Jak się pojawiają dziwne błędy podczas uruchomienia aplikacji to zazwyczaj rebuild solucji pomaga. Jeżeli rebuild nie pomoże to masz jakiś błąd w kodzie. |
|
domin568 Temat założony przez niniejszego użytkownika |
» 2014-02-17 18:21:08 Bardzo dziwne, nic nie zmieniając w kodzie spróbowałem skompilować od nowa projekt, i bez żadnych błędów się skompilowało, działa, poprosiłem Was o pomoc, bo myślałem że pewnych technik jakie ja robie nie można stosować, i wyrzuca debugerra, mimo to to dzięki :) |
|
DejaVu |
» 2014-02-17 18:50:54 Po prostu kompilator źle poskładał kod - zdarza mu się to co jakiś czas. Skoro problem rozwiązany to zamykam. |
|
« 1 » |