GLBasic forum

Codesnippets => Code Snippets => Topic started by: D2O on 2008-Jun-21

Title: MouseHit()
Post by: D2O on 2008-Jun-21
Tach,
mir ist das noch garnicht aufgefallen, aber benutzt Ihr garkein MouseHit()  ??
Ich brauch das immer wieder ;)

Hier gibts ne Tolle Function und Beispiel dazu.
Hierzu habe ich nur die KeyHit() Function von Gernot etwas abgewandelt, bzw. auch die Rückgabe werte sind bei mir anders.
1  =  Geklickt
2  = Gedrückt
-1 = losgelassen
0 = nichts ;)
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

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



Title: Re: MouseHit()
Post by: BumbleBee on 2008-Jun-21
Hi
Doch, ich brauch schon MouseHit(). :) Hab mir so was ähnliches schon geschrieben. Gut, wenn die Antwort jetzt schon da ist. Denn die Frage nach MouseHit() kommt bestimmt noch. =D Danke für's umwandeln. :)

Cheers
Title: Re: MouseHit()
Post by: Schranz0r on 2008-Jun-22
Lustig, hatte ich für WPShadow auch schon mal umgeschrieben :D