Tastatur "Lag"

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Tastatur "Lag"

    Hi,

    ich habe mal wieder ein Problem. Ich habe ein Texteingabefeld programmiert, dass die Eingaben in global.formell speichert. Diese wird dann so benutzt:

    GML-Quellcode

    1. execute_string("weites = "+global.formell)
    2. if error_occurred then
    3. {
    4. error_occurred=false
    5. execute_string("weites = "+global.formellr)
    6. global.flf = true
    7. }
    8. else
    9. {
    10. global.formellr = global.formell
    11. global.flf = false
    12. }
    Alles anzeigen

    Das funktioniert auch super, allerdings nur solange kein Fehler in global.formell ist. Dann wird sie durch global.formellr ersetzt und auch global.flf ändert seinen Wert. Allerdings reagiert das Programm dann nur noch sehr selten auf Tastatureingaben, die Maus funktionert problemlos und das Programm läuft konstant mit 30 FPS.
    Also nur die Tastatureingabe funktioniert daraufhin nicht mehr(oder nur sehr selten ungefähr bei jedem 20-30 tastendruck)

    Kann mir hierbei jemand helfen ich verstehe das nicht.

    FG
    andre111
  • Das ist mein Objekt für die Eingabe:

    Spoiler anzeigen

    GML-Quellcode

    1. Create Event:
    2. execute code:
    3. name = ""
    4. akt = ""
    5. schr = 1
    6. edit = 0
    7. sichtbar = true
    8. bg = c_black
    9. Mouse Event for Glob Left Released:
    10. execute code:
    11. if sichtbar==false then exit
    12. if edit == 1 then
    13. {
    14. edit = 0
    15. if editwert!="" then
    16. {
    17. akt = editwert
    18. }
    19. }
    20. if obj_leiste.menusel!=0 then exit
    21. if mouse_y>=y and mouse_y<=y+16 then
    22. {
    23. //edit
    24. if mouse_x>=x and mouse_x<=x+150+150+150-32 then
    25. {
    26. edit=1
    27. editwert=akt
    28. }
    29. }
    30. Draw Event:
    31. execute code:
    32. if sichtbar==false then exit
    33. if bg!=c_black then
    34. {
    35. draw_set_color(bg)
    36. draw_rectangle(x-1,y-1,x+150-18+150-18+150-18+32,y+16+2,false)
    37. }
    38. draw_set_color(c_black)
    39. draw_rectangle(x-1,y-1,x+150-18+150-18+150-18+32,y+16+2,true)
    40. //texte
    41. //name
    42. draw_text(x,y,name+": ")
    43. //wert
    44. draw_set_font(fn_small)
    45. if edit == 0 then
    46. {
    47. draw_text(x+60,y+2,string(akt))
    48. }
    49. else
    50. {
    51. draw_text(x+60,y+2,string(editwert)+"|")
    52. }
    53. draw_set_font(font0)
    54. Key Release Event for <any key> Key:
    55. execute code:
    56. if sichtbar==false then exit
    57. if edit==1 then
    58. {
    59. switch (keyboard_lastkey)
    60. {
    61. case 0: { break; }
    62. case vk_backspace: { if string_length(editwert)>0 then editwert=string_copy(editwert,0,string_length(editwert)-1); break; }
    63. case vk_enter:
    64. {
    65. edit = 0
    66. if editwert!="" then
    67. {
    68. akt = editwert
    69. }
    70. break;
    71. }
    72. default: {
    73. editwert = editwert + keyboard_string
    74. keyboard_string = ""
    75. keyboard_lastkey = 0
    76. io_clear()
    77. break;
    78. }
    79. }
    80. if editwert!="" then
    81. {
    82. akt = editwert
    83. }
    84. }
    Alles anzeigen



    global.formell wird dann immer zu akt gesetzt. Und ich nutze execute_string() um die Eingaben als Code auszuführen.
  • Nein, es funktioniert ja alles super, nur sobald ein Fehler in der Formel ist geht es nicht mehr.

    edit: Ich sollte vieleicht auch erwähnen, dass das gesammte Programm nicht mehr auf die tastatur reagiert(also auch alle anderen Objekte), aber sonst alles problemlos und mit vollen 30 FPS läuft

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von andre111 ()

  • Kann das keiner erklähren?
    es wäre sehr schlecht, denn dann müsste ich das Programm verwerfen.
    Ich selbst verstehe das nicht, da ja das Programm nicht laggt oder sowas.

    edit: ok ich lade eine abgespeckte version hoch

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von andre111 ()

  • Hm, beim erstellen der Abgespeckten Version habe ich es jetzt "ausversehen" gefixt.
    Ich hatte bisher immer:
    release <any key>
    verwendet. Jetzt habe ich es zu:
    press <any key>
    umgeändert und es funktionert.
    Weiß jemand warum das so unterschiedlich funktioniert?