[SFML] Zdarzenie zależne od pozycji myszki
Ostatnio zmodyfikowano 2016-04-27 11:42
wojtek1904 Temat założony przez niniejszego użytkownika |
» 2016-04-25 15:14:24 W sumie nie mam co wstawiać kodu bo jest go niewiele, ale chcę, żeby po najechaniu na sprajta i kliknięciu myszką program się zamykał. Niestety ten kawałek kodu który tutaj jest w kursach sfmla 1.6 nie działa mi z sfml-em 2. A nie mogę sam sobie poradzić.
Więc bardzo bym prosił, żeby ktoś może mógł mi napisać ten kawałek kodu. |
|
maly |
» 2016-04-25 16:30:56 Tu znajdziesz podstawy użycia SFML http://www.sfml-dev.org/tutorials/sf::Event event; while( window.pollEvent( event ) ) { if( event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left ) { sf::Vector2f mousepos = window.mapPixelToCoords( { event.mouseButton.x, event.mouseButton.y } ); if( sprite.getGlobalBounds().contains( mousepos ) ) { window.close(); } } } |
|
wojtek1904 Temat założony przez niniejszego użytkownika |
» 2016-04-26 16:47:15 Noo można powiedzieć, że kod mi prawie działa, ale jeśli w tej linijce:
sf::Vector2f mousepos = window.mapPixelToCoords( { event.mouseButton.x, event.mouseButton.y } );
nie usunę klamerek to wywala mi błędy składniowe. Po ich usunięciu wywala jeszcze jeden błąd:
sf::Vector2f sf::RenderTarget::mapPixelToCoords(const sf::Vector2i &,const sf::View &) const' : cannot convert parameter 1 from 'int' to 'const sf::Vector2i &'
Wstawię jeszcze cały kod na wszelki wypadek :)
#include <SFML/Graphics.hpp>
int main() { sf::RenderWindow window( sf::VideoMode( 800, 600, 32 ), "Kurs SFML - http://cpp0x.pl" ); sf::Texture obrazek; obrazek.loadFromFile("wyjście.png"); sf::Sprite naszSprajt; naszSprajt.setTexture( obrazek ); naszSprajt.setPosition( 400, 300 ); sf::Event event; while( window.pollEvent( event ) ) { if( event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left ) { sf::Vector2f mousepos = window.mapPixelToCoords( event.mouseButton.x, event.mouseButton.y ); if( naszSprajt.getGlobalBounds().contains( mousepos ) ) { window.close(); } } } return 0; } |
|
maly |
» 2016-04-27 11:42:05 Nie wiem jaki kompilator używasz ale pewnie nie masz załączonej obsługi c++11 więc albo ją załącz albo zamiast { } użyj jawnego konstruktora sf::Vector2i( event.mouseButton.x, event.mouseButton.y ) , pozatym już po logach powineineś domyślić się jakie arumenty powinny się tam znależć. |
|
1 « 2 » |