Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Zdarzenie zależne od pozycji myszki

Ostatnio zmodyfikowano 2016-04-27 11:42
Autor Wiadomość
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.
P-147638
maly
» 2016-04-25 16:30:56
Tu znajdziesz podstawy użycia SFML http://www.sfml-dev.org​/tutorials/

C/C++
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();
        }
    }
}
P-147650
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;
}
P-147688
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żć.
P-147719
1 « 2 »
Poprzednia strona Strona 2 z 2