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

[SFML]Czy kliknięto sprajta?

Ostatnio zmodyfikowano 2011-06-04 18:46
Autor Wiadomość
mar3
Temat założony przez niniejszego użytkownika
[SFML]Czy kliknięto sprajta?
» 2011-06-04 16:27:29
Chcę sprawdzić czy został kliknięty dany sprajt. Czy powinienem transformować współrzędne do lokalnych (Sprajt.TransformToLocal)? Np.
C/C++
sf::Event zdarzenie;
while( oknoAplikacji.GetEvent( zdarzenie ) )
{
    if( zdarzenie.Type == sf::Event::MouseButtonPressed && zdarzenie.MouseButton.Button == sf::Mouse::Left )
    {
        sf::Vector2f punkt = naszSprajt.TransformToLocal( sf::Vector2f(( float ) zdarzenie.MouseButton.X,( float ) zdarzenie.MouseButton.Y ) );
        if( punkt.x >= 0 && punkt.y >= 0 && punkt.x <= obrazek.GetWidth() && punkt.y <= obrazek.GetHeight() )
        {
            //kliknięto sprajta
        }
    }
}
Czy może do globalnych?
P-33827
malan
» 2011-06-04 17:27:41
A może porównaj pozycję Sprita z pozycją myszki?
P-33833
DejaVu
» 2011-06-04 17:42:23
Rozwiązanie masz w kursie przedstawione. Wystarczy go przeczytać.

http://cpp0x.pl/kursy/Kurs-SFML-C++ /Tworzenie-i-wyswietlanie-sprajtow/333
P-33836
mar3
Temat założony przez niniejszego użytkownika
» 2011-06-04 17:48:37
C/C++
const sf::Input & sterowanie = oknoAplikacji.GetInput();
sf::Vector2f punkt = naszSprajt.TransformToLocal( sf::Vector2f(( float ) sterowanie.GetMouseX(),( float ) sterowanie.GetMouseY() ) );
bool bCzyZaznaczony =( punkt.x >= 0 && punkt.y >= 0 && punkt.x <= obrazek.GetWidth() && punkt.y <= obrazek.GetHeight() );
naszSprajt.SetColor( bCzyZaznaczony ? sf::Color::Green: sf::Color::Red );
Czy chodzi o to? Zrobiłem podobnie tylko mam problem, bo jak się zmaksymalizuje okno gry to wtedy już źle działa.
P-33838
DejaVu
» 2011-06-04 17:50:40
Sugerujesz więc, że jak skopiuję kod z kursu i zmodyfikuję flagę na fullscreen to będzie źle działało? :)
P-33839
mar3
Temat założony przez niniejszego użytkownika
» 2011-06-04 17:56:08
Nie. Ja uruchamiam tę grę w oknie jak inne aplikacje np. Paint. Problem jest wtedy kiedy kliknę ikonkę zmaksymailozowania u góry okna obok przycisku do zamknięcia(X).
P-33842
DejaVu
» 2011-06-04 17:59:49
I czym się Twój problem objawia? Uwzględniasz fakt, że antialiasing rozmywa Ci barwy, więc krawędź niekoniecznie wypada w miejscu w jakim wydawać się było powinna być?
P-33843
mar3
Temat założony przez niniejszego użytkownika
» 2011-06-04 18:03:34
Problem polega na tym, że jak mam 2 sprajty obok siebie klikam w pierwszego, a on myśli, że w drugiego. :)
P-33844
« 1 » 2 3
  Strona 1 z 3 Następna strona