GLBasic forum

Other languages => GLBasic - de => Topic started by: Worebu on 2018-Feb-10

Title: Maus abfangen
Post by: Worebu on 2018-Feb-10
Moinsen,
hat jemand eine Idee wie einfach die Maus abfangen kann, so das sie nicht durch alle abfragen rast ?. Ich möchte mit einem Tastendruck der Maus Musik an und Ausschalten.  Allerdings weiss ich nicht wir ich sie davon anhalten soll durch beide Abfragen durchzugehen und mir die Musik wieder anzuschalten.

Code (glbasic) Select

WHILE TRUE
MOUSESTATE mx,my,b1,b2 // Mauskoordinaten

// Play
//
IF mx > 437 AND mx < 587 AND my > 427 AND my < 577 AND b1 = TRUE AND ISMUSICPLAYING() = FALSE
PLAYMUSIC "04.mp3",FALSE
ENDIF

// Stop
//
IF mx > 437 AND mx < 587 AND my > 427 AND my < 577 AND b1 = TRUE AND ISMUSICPLAYING() = TRUE
STOPMUSIC
ENDIF

SHOWSCREEN
WEND



Das ist mal ein kleines Beispiel.
Title: Re: Maus abfangen
Post by: D2O on 2018-Feb-11
Hallo @Worebu,

ich glaube das was Du suchst, wäre eine MouseHit() funktion.
Da hab ich noch was, ist aber fast 10 Jahre her, man oh man, so Alt bin ich schon ;)

Schranz0r hatte damal auch mal was geschrieben.
Hier mal der Code von mir und der Link zu dem thread.

http://www.glbasic.com/forum/index.php?topic=2572.msg19177#msg19177 (http://www.glbasic.com/forum/index.php?topic=2572.msg19177#msg19177)
oder gib in der SuFu mal "MouseHit" ein.
Schönen Sonntag noch :)

Code (glbasic) Select
// --------------------------------- //
// Project: Mousehit
// Start: Saturday, June 21, 2008
// IDE Version: 5.300



GLOBAL f1 = 200
GLOBAL f2 = 0
GLOBAL f3 = 50

GLOBAL f4 = 50
GLOBAL f5 = 50
GLOBAL f6 = 3

LOCAL mx,my,b1,b2

WHILE TRUE
        MOUSESTATE mx,my,b1,b2  ///Mouse Initialisieren

        MouseHitUpdate(b1,b2) // Abfrage welche Mousetasten überprüft werden sollen



                                // Mousbutton 1
                IF MouseHit(1) = 1  // (1) = b1 | (2) = b2
                                                        // Returns >>  1 = MouseHit | 2 = MouseDown | -1 = release event | 0 = Nothing
                                f1 = RND(255)
                                f2 = RND(255)
                                f3 = RND(255)
                ENDIF

                                // Mousbutton 2
                IF MouseHit(2) = 1
                                f4 = RND(255)
                                f5 = RND(255)
                                f6 = RND(255)
                ENDIF


        DRAWRECT 10,10,100,100,RGB(f1,f2,f3)
        DRAWRECT 115,10,100,100,RGB(f4,f5,f6)




SHOWSCREEN
WEND
END


//////////////////////////////////////////////////////////////////////////////////////////////////////

FUNCTION MouseHitUpdate : l_1 = 0, l_2 = 0

GLOBAL gMouseDown[], gMouseState[]
GLOBAL K[]
        DIM K[3]

LOCAL i
    // First Time call/ zum ersten Mal hier
    IF BOUNDS(gMouseDown[],0)=0
        DIM gMouseDown[7]
        DIM gMouseState[7]
    ENDIF

    // For each key / für jede Taste
    FOR i=0 TO 2
       // k = KEY(i)  ////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
       K[0] = 0  //Dummy, für das bessere verständnis ;)  Button 1 - 2

       K[1] = l_1
       K[2] = l_2


        // Key is pressed / Taste ist gedrückt
        IF K[i]
            IF gMouseDown[i]
                gMouseState[i]=2  // war 1
            ELSE
                gMouseDown[i]=2  // war 1
                gMouseState[i]=1 // war 2
            ENDIF
        ELSE
            // Key is not pressed / Taste nicht gedrückt

            // Has key been pressed before?
            // War die Taste gedrückt?
            IF gMouseDown[i]
                gMouseDown[i] = 0
                gMouseState[i] = -1
            ELSE
               gMouseState[i]=0
            ENDIF
        ENDIF
    NEXT
ENDFUNCTION





//  0 = not pressed / nicht gedrückt
//  1 = just pressed / gerade runtergedrückt
//  2 = pressed / gedrückt (gehalten)
// -1 = release event / wieder losgelassen

// Liefert den aktuellen zustand zurück, Max 6 Mousbuttons 1-6
FUNCTION MouseHit : mKEY
// SIcherheits abfrage
        IF mKEY > 2 THEN mKEY = 0
        IF mKEY < 0 THEN mKEY = 0

        RETURN gMouseState[mKEY]
ENDFUNCTION