Author Topic: Einen richtigen Button machen?  (Read 10704 times)

Offline Dennis

  • Mc. Print
  • *
  • Posts: 19
    • View Profile
Einen richtigen Button machen?
« on: 2015-Oct-28 »
Guten Morgen ;)
Ich habe schon seit längerem einen Account und schaue eigentlich nur ... . Auf jede Fall möchte ich auch mal ein Topic starten. Mit der Frage, Wie mache ich eigentlich einen funktionen Button? Weiß da jemand was zu?

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5006
  • O Rly?
    • View Profile
Re: Einen richtigen Button machen?
« Reply #1 on: 2015-Oct-28 »
Wenn ich zuhause bin, schicke ich dir ein kleines Beispiel.
Wird so ca. 16 Uhr werden.

EDIT:

Code: GLBasic [Select]
// --------------------------------- //
// Project: Button
// Start: Wednesday, October 28, 2015
// IDE Version: 14.006


// SETCURRENTDIR("Media") // go to media files
SYSTEMPOINTER TRUE


TYPE TButton
       
        status%                 // aktiv oder nicht -> 1 & 0
        isToggle                // ist es ein togglebutton dann 1
        x;y                             // startposition
        width; height   // größe des Buttons
        clickTimer              // damit nicht jeder frame neu getoggelt wird brauchen wir einen Timer
        color = 592383  // Buttonfarbe  -> rot... :D am Start
       
        FUNCTION Draw: x, y, sizeX, sizeY
       
                self.ResetButton();
               
                self.x = x;
                self.y = y;
                self.width = sizeX;
                self.height = sizeY;

               
                DRAWRECT self.x, self.y, self.width, self.height, self.color
       
        ENDFUNCTION
       
        FUNCTION isMouseOver: mx, my, b1
                IF BOXCOLL(self.x, self.y, self.width, self.height, mx, my, 0, 0) AND self.clickTimer < GETTIMERALL() // bin ich über den Button und darf ich klicken vom Timer her?
                        IF b1   // ist linke Maustaste gedrückt
                                self.ToggleStatus() // setze ihn active
                                self.clickTimer = GETTIMERALL()+500 // 500 ms Verzögerung zum nächstmöglichen Klick 
                        ENDIF
                ENDIF
        ENDFUNCTION
       
        FUNCTION isButtonDown:
                RETURN self.status
        ENDFUNCTION
       
        FUNCTION ResetButton:
                IF self.isButtonDown() = TRUE AND self.isToggle = FALSE
                        self.status = 0
                ENDIF
        ENDFUNCTION
       
        FUNCTION ToggleStatus:
                self.status = NOT self.status   // Ohhhhhhh.... ein ToggleTrick :D 0 -> 1, 1 -> 0
        ENDFUNCTION
       
        FUNCTION setAsToggleButton: true_false
                self.isToggle = true_false
        ENDFUNCTION
ENDTYPE



LOCAL Button AS TButton                 // erstelle eine Buttoninstanz
//Button.setAsToggleButton(TRUE)        // setze den Button als ToggleButton


LOCAL mx, my, b1, b2

WHILE TRUE

        MOUSESTATE mx, my, b1, b2       // mausstatus abfragen, siehe dazu Hilfedatei ( F1 )

        Button.Draw(100,100,100,20)             // zeichne den Button
        Button.isMouseOver(mx,my,b1)    // ist die Maus über den Button       
       
       
        IF Button.isButtonDown()                // wurde der Button gedrückt?
                Button.color = RGB(RND(255), RND(255), RND(255)) // wenn er gedrückt wurde dann änder mir die Farbe der Buttons
        ENDIF
       
        PRINT "STATUS: "+Button.isButtonDown(), 10 ,10 // statusausgabe zum debuggen
                       
SHOWSCREEN
WEND
END
 
« Last Edit: 2015-Oct-28 by Schranz0r »
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Dennis

  • Mc. Print
  • *
  • Posts: 19
    • View Profile
Re: Einen richtigen Button machen?
« Reply #2 on: 2015-Oct-29 »
Vielen Dank für die schnelle Antwort :-)

Ich habe gestern versucht damit was zu machen.
Eine frage hätte ich noch:

Man kann einen Button gut drücken zwei auch ...
Aber ich kann nicht 2 oder 3 Buttons gleichzeitig drücken aber wenn ich die Buttons durch Key (Taste) ersetzte geht das. Wie kann das sein? Hab ich einen Fehler gemacht?

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5006
  • O Rly?
    • View Profile
Re: Einen richtigen Button machen?
« Reply #3 on: 2015-Oct-29 »
Zeig doch mal bitte deinen Code.
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1061
    • View Profile
    • http://www.deuteriumoxid.com
Re: Einen richtigen Button machen?
« Reply #4 on: 2015-Oct-29 »
Mit der Mouse 3 Button gleichzeitig?
Kann hier davon ausgehen das zu es über einen Touchscreen machen möchtest?

Edit://
Nicht schön aber sollte funktionieren.

Code: GLBasic [Select]
// --------------------------------- //
// Project: Multitouch
// Start: Thursday, October 29, 2015
// IDE Version: 12.308


// SETCURRENTDIR("Media") // go to media files

SYSTEMPOINTER TRUE

GLOBAL color1,color2,button1,button2,button3
GLOBAL  mx,my,mb1,mb2
color1 = RGB(0x80, 0xff, 0xff)
color2 = RGB(0xff, 0xff, 0xb0)

WHILE TRUE
button1 = FALSE
button2 = FALSE
button3 = FALSE
FOR i = 0 TO 2  // 3 x Mouse
                SETACTIVEMOUSE i
                        MOUSESTATE mx,my,mb1,mb2

                        IF (i = 0 AND mb1  AND  mx > 0 AND mx < 100 AND my > 0  AND my < 50) OR (i = 1 AND mb1  AND  mx > 0 AND mx < 100 AND my > 0  AND my < 50) OR (i = 2 AND mb1  AND  mx > 0 AND mx < 100 AND my > 0  AND my < 50)
                                button1 = TRUE
                        ENDIF
                        /////////////////////////////////////////
                        IF (i = 0 AND mb1  AND  mx > 0 AND mx < 100 AND my > 100  AND my < 150) OR (i = 1 AND mb1  AND  mx > 0 AND mx < 100 AND my > 100  AND my < 150) OR (i = 2 AND mb1  AND  mx > 0 AND mx < 100 AND my > 100  AND my < 150)
                                button2 = TRUE
                        ENDIF
                        /////////////////////////////////////////
                        IF (i = 0 AND mb1  AND  mx > 0 AND mx < 100 AND my > 200  AND my < 250) OR (i = 1 AND mb1  AND  mx > 0 AND mx < 100 AND my > 200  AND my < 250) OR (i = 2 AND mb1  AND  mx > 0 AND mx < 100 AND my > 200  AND my < 250)
                                button3 = TRUE
                        ENDIF
                        /////////////////////////////////////////

IF button1 = FALSE
        DRAWRECT 0,0,100,50,color1
        ELSE
        DRAWRECT 0,0,100,50,color2
ENDIF


IF button2 = FALSE
        DRAWRECT 0,100,100,50,color1
        ELSE
        DRAWRECT 0,100,100,50,color2
ENDIF

IF button3 = FALSE
        DRAWRECT 0,200,100,50,color1
        ELSE
        DRAWRECT 0,200,100,50,color2
ENDIF




NEXT



SHOWSCREEN
WEND
« Last Edit: 2015-Oct-29 by D2O »
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

Offline Dennis

  • Mc. Print
  • *
  • Posts: 19
    • View Profile
Re: Einen richtigen Button machen?
« Reply #5 on: 2015-Oct-31 »
Ja sowas meine ich aber ich habe jetzt ein paar Button die funktionieren kann man nicht noch eine Function machen womit man die Buttons mehrere mal drücken kann?
Ich meine genau wie bei //Project: Multitouch
Ich meine es so:
FUNCTION
BUTTON 1
....
BUTTON 2
....
....
....
ENDFUNCTION

Ich hoffe man weiß ungefähr was ich meine.
« Last Edit: 2015-Nov-02 by Dennis »

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10682
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Re: Einen richtigen Button machen?
« Reply #6 on: 2015-Nov-04 »
Such nach DDGui

Offline Dennis

  • Mc. Print
  • *
  • Posts: 19
    • View Profile
Re: Einen richtigen Button machen?
« Reply #7 on: 2015-Nov-05 »
Im Forum oder in GLBasic?
Ich hab auf jedenfall mal in GLBasic gesucht und eine riesiges Projekt gefunden.(Ich möchte mich dafür entschuldigen, ich komme da kaum zurecht Sorry)
Aber zu meinem Button ich bin mehreren Tutorial gefolgt um einen Button zu erstellen jetzt ist ist es eine kleiner Function deswegen ist meine frage ob man nicht zusätzlich eine Function erstellen kann um mehrere Buttons zu drücken?

Offline erico

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 4168
    • View Profile
    • Portfolio
Re: Einen richtigen Button machen?
« Reply #8 on: 2015-Nov-05 »
While I did not understand much of what is going on in German here...
...in case you want to know how to have more than 1 button pressed on a touch screen, you´d have to do some coding to cope that.

here is an example that will read 2 button presses on a touchscreen, it should give you a general idea.
http://www.glbasic.com/forum/index.php?topic=10214.0

Offline Dennis

  • Mc. Print
  • *
  • Posts: 19
    • View Profile
Re: Einen richtigen Button machen?
« Reply #9 on: 2015-Nov-05 »
Ich möchte möchte euch für eure Hilfe danken aber ich such eine Function wo ich die Function Button einbinden kann. Ich hoffe Ihr wisst was ich meine :)

Offline erico

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 4168
    • View Profile
    • Portfolio
Re: Einen richtigen Button machen?
« Reply #10 on: 2015-Nov-05 »
oh, now I see... then it is beyond my control.  ;)

Offline sf-in-sf

  • Mr. Drawsprite
  • **
  • Posts: 93
  • Artist F.P. Brixey
    • View Profile
    • My computed art project
Re: Einen richtigen Button machen?
« Reply #11 on: 2015-Nov-05 »
Die " button1, button2, button3" ist etwas schwach. Lieber ein Array von Mäuser machen, oder eine Liste von Mäuser Typen. Z.b. dim b1%[8] ; dim b2%[8] usw.
Gern -und oft- schreibe ich den Klicktest so: if (b1+b2) >0 THEN ...       damit man rechts oder links oder beide klicken kann. Wieso? --> in Bool Logik, "+" bedeutet "oder".
Viel Spaß also, und einen guten Erfolg, wa.
On the day the atom is a cube I will start believing in the square pixel.

Offline Dennis

  • Mc. Print
  • *
  • Posts: 19
    • View Profile
Re: Einen richtigen Button machen?
« Reply #12 on: 2015-Nov-06 »
Was meinst du?
Eigentlich waren die Buttons als KEY Ersatz geplant wie mach ich das den jetzt müssen die Buttons keine Function sein?

Offline Dennis

  • Mc. Print
  • *
  • Posts: 19
    • View Profile
Re: Einen richtigen Button machen?
« Reply #13 on: 2015-Nov-07 »
Entschuldigt das ich soviel frager aber ich habe jetzt versucht von D20 das ,,Multitouch einzubringen jetzt hab ich vollgenes Problem (es Funktioniert sonst wirklich spitze)
Ich musst leider While True und das wen rausnehmen weil sich das spiel aufgehangen hat. Jetzt aber verschwinden die Button wenn ich einen anderen Button drücke(aber es verschwindet nur die die im unter dem Button gesetzt sind.
Klingt verrückt ich weiß hätte da jemand eine Idee? Bitte

Offline D2O

  • Prof. Inline
  • *****
  • Posts: 1061
    • View Profile
    • http://www.deuteriumoxid.com
Re: Einen richtigen Button machen?
« Reply #14 on: 2015-Nov-07 »
Wie, Du hast das While -Wend herausnehmen müssen?
Wie, das Spiel hängt sich sonst auf?

Hast Du das vorhandene While - Wend in Deinem Mainloop einfach hinein gesetzt?
Wenn ja, dann hast Du das mit der Mainloop, (z.B. While - Wend) noch nicht ganz verstanden!
Dann solltest Du hier noch etwas üben ;) bevor Du hier ansowas wie Multitouch rangehst.



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