Skocz do zawartości

[SFML] Odczytywanie pozycji sprajtów i myszy


Sianoo

Polecane posty

Witam,

Jestem początkującym programistą i ostatnio natknąłem się na kurs biblioteki SFML. Nie było w nim za wiele na temat odczytywania bieżących pozycji myszy i sprajtów. Ostatnio pisząc pewną aplikację natknąłem się na problem z tym fragmętem kodu:

 sf::Event zdarzenie;
   	while( oknoAplikacji.GetEvent( zdarzenie ) )
       	{
           	if (zdarzenie.Type == sf::Event::Closed)
               	oknoAplikacji.Close();

           	if ((zdarzenie.Type == sf::Event::MouseButtonPressed) && (zdarzenie.MouseButton.Button == sf::Mouse::Left))
           	{

               	if (((zdarzenie.MouseMove.X >= person_button.GetPosition().x) && (zdarzenie.MouseMove.Y >= person_button.GetPosition().y)) && ((zdarzenie.MouseMove.X <= person_button.GetPosition().x+50) && (zdarzenie.MouseMove.Y <= person_button.GetPosition().y+41)))
               	{
                   	oknoAplikacji.Close();
               	}
           	}
       	}

 

Ten fragmęt odczytuje Eventy. Chodzi mi o to, by po kliknięciu na sprajt(wymiary to 50x41) aplikacja zamykała się.

 

Z góry thx.

Link do komentarza
Udostępnij na innych stronach

  • 8 months later...

Temat dawno nieaktualny, ale mimo to napiszę rozwiązanie - może komuś się przyda.

 

Ja w swojej grze rozwiązałem to tak, że tworzę nowy, praktycznie niewidoczny sprite 1x1, który aktywnie podąża za kursorem:

sf::Image img_cursor;
img_cursor.Create(1, 1, sf::Color::Black);
sf::Sprite cursor;
cursor.SetImage(img_cursor);
/// Blablabla
while(1)
{
cursor.SetPosition(sterowanie.GetMouseX(), sterowanie.GetMouseY());

gdzie sterowanie to:

const sf::Input &sterowanie = okno->GetInput();

gdzie okno to wskaźnik sf::RenderWindow* :P

 

W przypadku kolizji przycisku z pseudokursorem (używając PixelPerfectTest z tego) oraz wciśnięciu LPM ma wykonać kod.

Link do komentarza
Udostępnij na innych stronach

  • 2 years later...

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...