Wie man die 'Wait' Aktion benutzt

1

Statistiques

2,434 visites, 2,746 vues

Outils

Partager

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 14 Aug, 2014. Last updated 17 Dec, 2022

Die Wait Aktion in dem System Objekt wartet eine bestimmte Anzahl Sekunden bevor es zu der nächsten Aktion übergeht. Es erinnert sich an all die ausgewählten Objekte somit funktioniert es genau gleich wie ein normales Event, nur ein wenig Verzögert. Während des Wartens wird das Ausführen von anderen Events normal fortgeführt.

Zum Beispiel berücksichtige:

+ On spacebar pressed

-> Player: spawn a bullet

-> Audio: play 'bang' sound

Beim Drücken der Leertaste werden deine Kugeln sofort mit einem Knall entstehen. Fügst du jedoch eine Wait Aktion hinzu:

+ On spacebar pressed

-> System: wait 1 second

-> Player: spawn a bullet

-> Audio: play 'bang' sound

Beim Drücken der Leertaste besteht eine 1-Sekunden lange Verzögerung, wobei erst danach die Kugel mit einem Knall ensteht. Drückst du nun die Leertaste 2 mal schnell hinter einander, wird es doppelt in die Warteschlange aufgenommen, somit werden 2 Kugeln gefeuert, jede davon eine Sekunde nach dem du die Leertaste betätigt hattest.

Du kannst die Warten Aktion auch mehrere male in einem Event benutzen. Zum Beispiel:

+ On start of layout

-> Text: set text to "Hallo da!" & newline

-> System: wait 1 second

-> Text: append text "Wie geht es dir?" & newline

-> System: wait 1 second

-> Text: append text "Schön dich zu treffen!"

Dieses Event fügt jede Nachricht zu dem Text Objekt hinzu, bei einem 1-Sekunden Interval. Vergiss nicht dass die Anderen deiner Events normal weiter laufen während die Waits am warten sind. Jedes Event kann jeder Zeit so viele Waits abrufen wie es will, dabei läuft alles

wie geplant.

Hier ein weiteres Beispiel:

+ Every 1 second

-> Sprite: set invisible

-> System: wait 0.3 seconds

-> Sprite: set visible

Das Bild blinkt.

Ein weiteres Beispiel:

+ Every 2 seconds

-> Enemy: spawn 'bullet'

-> System: wait 0.2 seconds

-> Enemy: spawn 'bullet'

-> System: wait 0.2 seconds

-> Enemy: spawn 'bullet'

Alle 2 Sekunden feuert der Gegner eine Salve von 3 Schüssen, jede davon 0.2 Sekunden von einander entfernt.

Wenn du glaubst ein echter Profi zu sein, kannst du auch Events in einem Loop planen:

+ On start of layout

+ Repeat 10 times

-> System: wait loopindex seconds

-> Text: append text "Time = " & time & newline

Dieses Event führt dazu dass jede Sekunde für insgesamt 10 Sekunden, eine neue Linie zu dem Text Objekt hinzu gefügt wird. Dies geschieht weil der "Repeat 10 times" Zustand die Aktion 10 mal ausführt, und bei jeder Runde wird ein Wait für eine andere Zeitspanne gesetzt gefolgt von einer Hinzufügung einer Text Linie. Dies verbreitet all die "append text" Aktionen im Laufe der Zeit.

Vermerke: wartest du eine Konstante Menge an Zeit in einem Loop, wie hier:

+ On start of layout

+ Repeat 10 times

-> Wait 1 second

-> Append text "Time = " & time & newline

Wird es warscheinlich nicht das tun was du eigentlich erwartest. Wenn das erste 'Wait' erreicht wird, wird der loop weiter geführt (da der Rest des Event Sheets weiter geführt wird unabhängig der Waits). So dass der Loop sofort beendet wird, dabei werden 10 'Append' Aktionen nach jedem Einzelnem mit einer 1-Sekunden Verzögerung geplant. Somit wird nach einer Sekunde, alle Zehn Aktionen gleichzeitig ausgeführt. Ist dies nicht was du erreichen willst, benutze entweder Every X seconds System Kondition, oder verwende die loopindex basierte Variante wie oben vorgeschlagen.

Für fortgeschrittene Benutzer

Die Wait Aktion speichert den Status des gesamten SOL und bricht das Momentane Event ab. Sobald die Wartezeit abgelaufen ist, wird die ganze SOL wie sie war wieder hergestellt (minus jedes Objekt das zerstört wurde), und das Event wird an dem Punkt fortgesetzt wo die Aktion der Warte Aktion folgt. Es führt ebenso jedes Sub-Event fort. An jedem Punkt an dem eine weitere Wait Aktion angetroffen wird, passiert der selbe speichern-SOL-und-warte Prozess. So kannst du verschiedene Teile eines Events ausführen und zwar zu verschiedenen Zeitpunkten.

Ein weiterer Trick: "Wait 0 seconds" verschiebt die folgenden Aktionen bis ans Ende des Event Sheets.

Schlussfolgerung

Dies ist ein wirklich mächtiges Feature. Falls du jemals Construct Classic benutzt hast, solltest du es als viel elegantere Lösung empfinden, als die Funktion des Objekts "call after delay". Dinge über Zeit mit Events zu Planen war schon immer ein wenig Kopfzerbrechend, so hoffen wir dass Dies alles schöner und simpler macht!

  • 0 Comments

Want to leave a comment? Login or Register an account!