Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.01.2008, 13:05

Brauche Hile mit der SDL Maus und Button

Hi zusammen, also ich versuche jetzt schon seit einigen Tagen, mit der SDL, einen Button zu erstellen den der User anklicken kann!
So weit so gut das hba ich geschaft!

Aber jetzt habe ich folgendes Problem ich möchte, das wen der User, mit der Maus über den Button ist, das der Button dan aufleuchtet!
Dafür habe ich mir verschiedene Buttons erstellt!

Aber das Problem ist ich bekomm das nicht hin, das er den bUtton ändert, sobald die Maus in der Position ist!
Ich kann den Button Anklicken!

Hier ist mal der Code den ich dafür Benutze!

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        if (SDL_GetMouseState(&maus_x, &maus_y))
        {
            if(( maus_x < m_fXPos_g) & ( maus_x > m_fXPos))
            {           
                if(( maus_y < m_fYPos_g) & ( maus_y > m_fYPos))
                {
                    if(SDL_BUTTON(1))
                    {
                        m_pSpriteActual = m_pSpritePush;
                        is_event = true;
                    }
                    else
                    {
                        m_pSpriteActual = m_pSpriteMouseOver;
                    }
                }
            }
        }//If SDL_GetMouseState


Ich hoffe ihr könnt mir Helfen!

Ach Ps.
Wen ich den Code folgender maßen mach:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        SDL_GetMouseState(&maus_x, &maus_y);

            if(( maus_x < m_fXPos_g) & ( maus_x > m_fXPos))
            {           
                if(( maus_y < m_fYPos_g) & ( maus_y > m_fYPos))
                {
                    if(SDL_BUTTON(1))
                    {
                        m_pSpriteActual = m_pSpritePush;
                        is_event = true;
                    }
                    else
                    {
                        m_pSpriteActual = m_pSpriteMouseOver;
                    }
                }
            }//If SDL_GetMouseState

drückt er den Button einfach, obwohl ich keine Maus taste berühre!

MFG
Patrick (NERO_S)

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

2

25.01.2008, 13:14

Hallo,
liegt wahrscheinlich daran, dass du nicht den MouseState speicherst und somit die Abrage mist ist.

Du solltest SDL_GetMouseState wie folg nutzen.

C-/C++-Quelltext

1
2
3
4
5
UInt8 Mousestate = SDL_GetMouseState(&m_XPos, &m_YPos);
if(MouseState && SDL_BUTTON(1))
{
  //Tu was

}


Somit sollte das ganze schon eher laufen ;)
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Veiter

Frischling

Beiträge: 55

Wohnort: München

Beruf: Software-Entwickler

  • Private Nachricht senden

3

25.01.2008, 13:17

Sieht nach C/C++ aus. Dann müsstest du doch in der 2. und 3. IF-Anweisung statt "&" immer "&&" benutzen oder?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

25.01.2008, 13:35

Zitat von »"Veiter"«

Sieht nach C/C++ aus. Dann müsstest du doch in der 2. und 3. IF-Anweisung statt "&" immer "&&" benutzen oder?


Ist doch egal was er hier verwendet.
@D13_Dreinig

Beiträge: 9

Wohnort: Emsland

Beruf: Schüler

  • Private Nachricht senden

5

25.01.2008, 13:37

Stimmt aber schon,
bei dem logischen und (AND) werden zwei & (&&) verwendet.
Ein & wäre die Bitweise verknüpfung, bzw hat etwas mit Zeigern zu tun.
[cpp:1]
if (leben == 0)
{
cout<<"GameOver";
}
return 0;
[/cpp:1]
(Nu)Metal(chore) RULEZ!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

25.01.2008, 13:43

Zitat von »"DirectX - Acriss"«

Stimmt aber schon,
bei dem logischen und (AND) werden zwei & (&&) verwendet.
Ein & wäre die Bitweise verknüpfung, bzw hat etwas mit Zeigern zu tun.


Genau so ist das, aber der Effekt bleibt sich hier gleich. Und was hat der Operator & denn mit Zeigern zu tun? :shock:
@D13_Dreinig

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

25.01.2008, 13:49

Zitat von »"David_pb"«

Genau so ist das, aber der Effekt bleibt sich hier gleich.

Nein!
Der &-Operator müsste hier genutzt werden, um zu testen, ob ein bestimmtes Bit gesetzt ist - um herauszufinden, ob die Maustaste X gerade gedrückt ist.
Der &&-Operator würde in diesem Fall ein unsinniges Ergebnis liefern.

Zitat von »"David_pb"«

Und was hat der Operator & denn mit Zeigern zu tun? :shock:

Er meint wohl den unären &-Operator.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

25.01.2008, 13:51

Zitat von »"David Scherfgen"«

Zitat von »"David_pb"«

Genau so ist das, aber der Effekt bleibt sich hier gleich.

Nein!
Der &-Operator müsste hier genutzt werden, um zu testen, ob ein bestimmtes Bit gesetzt ist - um herauszufinden, ob die Maustaste X gerade gedrückt ist.
Der &&-Operator würde in diesem Fall ein unsinniges Ergebnis liefern.


Ich dachte er bezog sich explizit nur auf die Zeilen:

C-/C++-Quelltext

1
2
if(( maus_x < m_fXPos_g) & ( maus_x > m_fXPos)) 
if(( maus_y < m_fYPos_g) & ( maus_y > m_fYPos))


Da ist es nämlich ziemlich egal ob man && oder & verwendet.

Zitat von »"David Scherfgen"«


Zitat von »"David_pb"«

Und was hat der Operator & denn mit Zeigern zu tun? :shock:

Er meint wohl den unären &-Operator.


Achso!
@D13_Dreinig

9

25.01.2008, 14:07

Vielen Dank euch allen, habs aber mittlerweile hinbekommen ^^!
Habs so gemacht wie T-VIRUS es meinte!

THX!

Werbeanzeige