Virtual Keys Frage "Ord(char)" / Android Keyboard

  • Android

    Virtual Keys Frage "Ord(char)" / Android Keyboard

    Hallo,

    ich möchte gerne eine App für Android programmieren, wo man bspw. seinen Text eingeben kann, absenden kann und dieser für jeden einsehbar ist. Da ich es aber ziemlich unübersichtlich, klein und auch etwas hässlich mit get_string finde und alle Keyboard-Extensions für Android leider ein wenig Geld kosten und ich gerne eine kostenlose Variante hätte, wollte ich es selber versuchen. Bevor ich es aber auf die leichteste und zugleich zeitaufwendigste Methode probiere, wollte ich es mit der Virtual Key Funktion probieren, worüber ich gestolpert bin. So wie ich es gelesen und festgestellt habe, funktioniert das nur mit den vk (virtual key) Funtionen wie bspw. vk_up etc. Gäbe es aber auch eine Möglichkeit für die Chars wie q,w,e...? Das würde mich mal brennend interessieren!

    Ansonsten wäre ich auch schon dankbar, wenn jemand zufällig weiß, wo man soein Android Keyboard kostenlos downloaden kann oder wie man es sich auf auf anderem Weg schnell basteln kann (ich hätte jetzt nur noch mit Maustaste drücken und Keyboard String hinzufügen als Alternative im Hinterkopf)

    Lg
    icqgamer
    Ich hab noch nix für android gemacht, nur ein bisschen rumgelesen, du müsstest die ord("A") gemeinsam mit device_is_keypad_open benutzen können. Jedenfalls gibt es hier eine kostenlose erweiterung die zwar auch nur das native android keyboard benutzt, dir aber hoffentlich trotzdem weiterhelfen kann, wie man so eine abfrage machen kann.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
    Ich habe einfach eine Tastatur programmiert und nicht die Native benutzt, es geht eig. relativ schnell und man kann sie individuell anpassen. Zudem sollte man die get_string - Funktion eig. nur für Debugzwecke verwenden, wie es in der Referenz steht. Ich habe z.B. das Problem, dass wenn die Tastatur geöffnet ist und ich das Spiel minimiere und erneut öffne, sich die Tastatur aufhängt.

    Ein Beispiel, wie ich meine gemacht habe:

    Zuerst einen Array erstellen, welche Buchstaben etc. in einer Reihe der Tastatur vorhanden sein sollen

    GML-Quellcode

    1. l1[0] = "Q"
    2. l1[1] = "W"
    3. l1[2] = "E"
    4. l1[3] = "R"
    5. l1[4] = "T"
    6. l1[5] = "Y"
    7. l1[6] = "U"
    8. l1[7] = "I"
    9. l1[8] = "O"
    10. l1[9] = "P"


    GML-Quellcode

    1. // First Row
    2. for(i = 0 ; i < 10 ; i ++)
    3. {
    4. key = l1[i] // Welcher Key (Buchstabe) gezeichnet wird
    5. xx = 2+i*40 // Position der ersten Reihe/Buttons
    6. yy = 90
    7. draw_set_color(color1) // Button zeichnen
    8. draw_rectangle(xx,yy,xx+36,yy+32,0)
    9. draw_set_color(color2)
    10. draw_rectangle(xx+2,yy+2,xx+36,yy+32,1)
    11. draw_set_color(c_white)
    12. draw_text(xx+20,yy+3,key) // Welcher Key
    13. if device_mouse_check_button_released(0,mb_any) && point_in_rectangle(device_mouse_x(0),device_mouse_y(0),xx,yy,xx+36,yy+32) && ready = 1 && string_length(str) < maxl { str += key ; ready = t} // Wenn gedrückt, wird zuerst geprüft, ob die Tastatur bereit ist (nicht dass jeder frame der Key hinzugefügt wird) und ob die maximale Länge erreicht ist. Danach wird der Key zum String hinzugefügt
    14. }


    Ist eig. ziemlich schnell und flexibel, den Code kopiert man einfach für alle Reihen und schon hat man eine Tastatur

    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.

    Aku_Ryou schrieb:

    Ich hab noch nix für android gemacht, nur ein bisschen rumgelesen, du müsstest die ord("A") gemeinsam mit device_is_keypad_open benutzen können. Jedenfalls gibt es hier eine kostenlose erweiterung die zwar auch nur das native android keyboard benutzt, dir aber hoffentlich trotzdem weiterhelfen kann, wie man so eine abfrage machen kann.


    Das habe ich auch schon gefunden, allerdings ist das nur eine get_string Alternative mit mehr Funktionen und dort hätte ich im Endeffekt dann das gleiche Problem, dass man nur diese eine Zeile hätte für den Text und das bei längerem Text schnell unübersichtlich wird dann.

    Ja, genau, das mit dem Arrays hatte ich auch schon am Anfang, ich wusste nur noch nicht wie ich das am besten zeichnen lassen soll und wie ich das dann gemeinsam mit dem Array umsetzen soll. Ich werds später mal testen.
    touchscreens können echt nervig sein mit input delays oder ne taste hängt hab lang überlegt wie ich das am besten umsetze. ich geb euch mal ein beispiel mitten aus super mage world. mit dem touch hatte ich bisher selbst auf low phones keine probleme.

    der button hier im beispiel rechts, ja jeder button muss einzeln gemacht werden:
    create event :
    -------------------
    display_set_gui_size(1280,720); // gui oberfläche einstellen, also die grösse
    Player.kRight=virtual_key_add(x+258,y+479,190,240,vk_right); // denke VKs kennt ihr ja

    step event:
    ----------------
    if (device_mouse_check_button(2, mb_left)) { // hier wird nun gecheckt wo euer finger ist
    fingerX=device_mouse_x(2);
    fingerY=device_mouse_y(2);
    if (collision_point(fingerX, fingerY, id, true, false)==id) { // und ausserdem bei gefunden finger eine ID vergeben
    keyboard_key_press(vk_right) // hier könnt ihr eigentlich nun jede art von taste mit betätigen ohne das eine andere ausfällt
    }
    }

    draw GUI:
    ---------------

    draw_sprite(spr_right,0,358,619); // joar sonst seht ihr keine taste

    --------------------------------------------------
    WICHTIG !!!!!! es ist bei diesem beispiel zwingend erforderlich das ihr das object auf die position 0,0 im raum setzt, ausserdem hab ich im beispiel eine view grösse von 1280 x 720 genommen. ihr könnt die auflösung ändern müsst dann aber auch die position der keys neu ausrechnen.

    wie der code in action funktioniert könnt ihr euch auch sonst in super mage world auf android angucken.
    hoffe das hilft euch weiter.
    gruss,
    B