MouseHit()

Previous topic - Next topic

D2O

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



I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

BumbleBee

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
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Schranz0r

Lustig, hatte ich für WPShadow auch schon mal umgeschrieben :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard