warte bis Space gedrückt wird

  • GM 8
  • warte bis Space gedrückt wird

    Hi

    Ich bräuchte das um Messages wie bei RPGs anzuzeigen, bei denen erst gewartet wird, bis Space gedrückt wird, und dann erst mit dem Event fortgefahren wird. Allerdings friert das Spiel bei meinen Versuch immer ein. Kann mir jmd eine einfache Lösung zeigen ?

    mein bisheriger Code im Draw, wobei ich edliche andere Möglichkeiten versucht hab...

    GML-Quellcode

    1. do
    2. {
    3. script_execute(scr_messageBase,"Hi")
    4. }
    5. until (keyboard_check_pressed(vk_space))
  • Naturlich friert das bei dem ein denn das Skript wird so oft wiederholt bis space gedrückt wird. D.h. das Fenster wird solang auch nicht aktualisiert, etc.

    So wie du das meinst geht es schlichtweg nicht (es _könnte_ mit ein paar schwierigen Tricks gehen, je nachdem wie komplex dein Spiel ist, aber grundsaetzlich gilt: ) denn wenn ein Event nicht wieder verlassen wird, wird auch kein anderes Event ausgeführt was ein Einfrieren zur Folge hat bis das Event geendet hat!

    Du solltest deinen code aufspalten und Variablen verwenden die festhalten welcher Zustand grade da ist. Z.b. eine Variable space_wurde_gedrueckt welche im space-press event auf true gesetzt wird.. hoffe du verstehst was ich meine.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Wenn du willst, dass dein Spiel so lange einfriert, kannst du folgendes tun:

    GML-Quellcode

    1. script_execute(scr_messageBase,"Hi");
    2. do {
    3. screen_refresh(); // Packt das jetzige Bild in das Fenster (-> Backbuffer); Windows denk somit nicht, dass das Programm hängen geblieben ist.
    4. io_handle(); // Verarbeitet neue Benutzereingaben
    5. sleep(10); // Wir wollen den Prozessor ja nicht komplett auslasten, deswegen wird hier etwas gewartet (kann nat. auch gelöscht werden; funktioniert ab Studio nicht mehr).
    6. } until (keyboard_check_pressed(vk_space))


    Wichtig ist hierbei das screen_refresh() und io_handle(), da das Programm sonst abschmiert.

    - Joex3
    8|
  • Ich hab das Problem jetzt folgendermasen gelöst

    GML-Quellcode

    1. if (step = 0) // je nach Step wird ein anderer Text eingeblendet
    2. {
    3. script_execute(scr_messageBase,"Hi")
    4. }
    5. if (step = 1){
    6. global.messageBase_text = "text"}
    7. if (step = 2)
    8. {
    9. script_execute(scr_messageBase,"destroy") // schließt MessageBox
    10. instance_destroy() // schließt Event
    11. }
    12. if (keyPressedSpace = 1) // warte darauf das Space gedrückt wird
    13. {
    14. step += 1 // stept +1, sodass beim nächsten Durchlauf der nächste Text eingeblendet wird
    15. keyPressedSpace = 0 // setzt Space wieder auf 0
    16. }
    Alles anzeigen
  • Benutzer online 1

    1 Besucher