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

[SFML2.2] MouseButtonPressed i zwracanie boolean

Ostatnio zmodyfikowano 2015-06-22 11:01
Autor Wiadomość
bladykiel
Temat założony przez niniejszego użytkownika
[SFML2.2] MouseButtonPressed i zwracanie boolean
» 2015-06-22 09:23:57
Witam, mam dziwny problem :P
otóż mam pewną klasę i w niej funkcje z takim ifem..

C/C++
if( sf::Mouse::isButtonPressed( sf::Mouse::Left ) && sklepGun.czyKupno( sf::Mouse::getPosition( okno ) ) )
{
    gun.klikniecieKupna = true;
   
}

Jeśli przycisk myszki jest wciśnięty i gdy wskaźnik myszki znajduje się nad "obiektem" to ma zmienną bool (kliknięcieKupna) ustawic na true..

i wszystko ładnie by działało, gdyby nie fakt, że warunek jest spełniony tylko wtedy gdy guzik myszki jest WCIŚNIĘTY (i nie puszczony) oraz gdy wskaźnik znajduje się nad "obiektem".
Gdy puszczę przycisk myszki, lub wyjadę z przytrzymanym przyciskiem poza obrys "obiektu" zmienna klikniecieKupna ustawia się na false...

I tu jest moje pytanie.. czemu zmienna sama ustawia się na false, pomimo tego, iż nie jest nigdzie ustawiana na tę wartość.


Żeby było śmieszniej, jeśli ifa wstawie do głównej pętli programu, wszystko działa ok.
P-133912
Glazus
» 2015-06-22 09:41:25
Pokaż więcej kodu.
P-133913
bladykiel
Temat założony przez niniejszego użytkownika
» 2015-06-22 09:46:44
C/C++
void ustawGun( kupnoGun gun, guns sklepGun, sf::RenderWindow & okno ) {
    if( sf::Mouse::isButtonPressed( sf::Mouse::Left ) && sklepGun.czyKupno( sf::Mouse::getPosition( okno ) ) )
    {
        gun.klikniecieKupna = true;
    }
   
    if( gun.klikniecieKupna == true )
    {
        gun.wybierzPozycje( sf::Mouse::getPosition( okno ) );
        gun.rysuj( okno );
    }
   
}

sklepGun.czyKupno(sf::Mouse::getPosition(okno))  - ta funkcja zwraca true, jeśli wskaźnik myszki jest nad obiektem który chcemy kliknąć.

drugi if: jeśli kliknęliśmy na obiecie, ma nowy obiekt ktory przeslalismy do funkcji (gun) ustawic pozycje na pozycji wskaznika.

 gun.klikniecieKupna = true; - jest polem obiektu
P-133914
Monika90
» 2015-06-22 10:50:36
Ponieważ przekazujesz kupnoGun przez wartość, to funkcja nie operuje na oryginale lecz na kopii i zmiany stanu obiektu nie są widoczne poza funkcją.
P-133915
bladykiel
Temat założony przez niniejszego użytkownika
» 2015-06-22 10:55:55
To prośba za 100 pkt :) jak zmienić, aby była zmieniana oryginalna wartość tej zmiennej ?
P-133916
Monika90
» 2015-06-22 10:59:15
Przekazuj przez referencję, tak jak to robisz z oknem.
P-133917
bladykiel
Temat założony przez niniejszego użytkownika
» 2015-06-22 11:01:23
hah... racja... aż mi wstyd normalnie:/

dzięki za pomoc :)
P-133919
« 1 »
  Strona 1 z 1