Jump to content

Wiederholungen verzögern


RoniHB

Empfohlene Beiträge

Hallo liebe Leute,

wie baue ich eine Verzögerung in eine Wiederholungsschleife ein? Die Idee ist, Fahrzeuge mit einem Schlagwort nacheinander mit einer Verzögerung von xx Sek. zu starten, damit sie nicht alle gleichzeitig losfahren.

Im Anhang die Testanlage V5

LG Ronald

StartKFZ.mbp

Bearbeitet von RoniHB
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Ronald,

der Trick ist, bei verzögerten Wiederholungen mit benutzerdefinierten Ereignissen zu arbeiten, da Wiederholungen selbst nicht verzögert werden können, benutzerdefinierte Ereignisse aber schon.

Viele Grüße,

Neo

StartKFZ-verzögert.mbp

Edit: Sehe gerade, dass das Beispiel nur prototypisch funktioniert, da die Reihenfolge der Autos nicht sichergestellt ist. Hier müsstest du daher mit expliziten Listen oder Verkettungen von Vorgänger/Nachfolger arbeiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Monate später...

Hallo zusammen,
ich hänge mich mal an.
Ich versuche gerade eine Gruppe von Feuerwehrleuten (5) nacheinander sichtbar zu machen (die Reihenfolge ist unwichtig).
Nach einigen Versuchen bin ich auf diesen Foreneintrag gestoßen, bekomme es aber nicht gelöst. Ich habe je Feuerwehrmann 3 Sek. Verzögerung eingestellt. Aber sie werden immer alle gleichzeitig sichtbar (nach Ablauf der 5x3 Sekunden). Abschnitt 1 im Dialogprotokoll erscheint sofort nach Betätigen der Taste, Abschnitt 2 nach den Besagten 5x3 Sekunden.
Ich habe den Versuch mal angehängt.

Gruß
Siggi

Screenshot.jpg

Verzögern.mbp

Bearbeitet von siggi
Ergänzung (Gruß)
Link zu diesem Kommentar
Auf anderen Seiten teilen

diese Funktion wird sofort bei Betätigung des grünen Tasters ausgeführt:

local t = layout:getEntitiesByKeyword("FW-Mann")
  for i, Wdh in ipairs(t) do
    $("BD Objekt Sichtbar"):invoke(Wdh, 3)
  end

Du sagst also in blitzschneller Folge für jeden Feuerwehrmann: "Warte 3 Sekunden, und dann zeige ihn"
Anders gesagt: Du startest für alle Feuerwehrmänner zugleich eine verzögerte Aktion.

Deshalb tut es nicht, was es tun soll.

Die Wiederholung ist hier das falsche Mittel.
Du willst nach und nach eine Liste abarbeiten. Das ist etwas anderes.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Götz,

danke für deine Antwort!
In der Anlage von Neo (StartKFZ-verzögert .mbp) funktioniert der Ablauf, ist dort irgend etwas anders?

local t = layout:getEntitiesByKeyword("AutoStart")
for i, Wdh in ipairs(t) do
  $("Fahrzeug starten"):invoke(Wdh, i)
end


Zum Verständnis für mich: <for i> nimmt den ersten Eintrag in der Tabelle <t>, führt das Benutzer definierte Ereignis <Fahrzeuge starten> aus und nimmt dann den nächsten Eintrag aus <t>.

Gruß Siggi

 

Bearbeitet von siggi
Korrigiert! ...Neo (StartKFZ-verzögert .mbp)..
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb siggi:

Zum Verständnis für mich: <for i> nimmt den ersten Eintrag in der Tabelle <t>, führt das Benutzer definierte Ereignis <Fahrzeuge starten> aus und nimmt dann den nächsten Eintrag aus <t>.

genau.
Aber es wartet nicht auf Rückmeldung. Es schickt einfach nacheinander die Befehle an alle Objekte aus der Liste.

 

vor 1 Stunde schrieb siggi:

In der Anlage von Neo ... ist dort irgend etwas anders?

Ja - Die Fahrzeuge starten alle zugleich.
Bzw. nein, es ist nichts anders - Die Fahrzeuge starten (genau wie bei dir die Feuerwehrmänner) alle zugleich.
    

Da hatte ich etwas wichtiges Übersehen. Pardon.

Bearbeitet von Goetz
Korrektur nach Lesen des folgenden Postings von Neo
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Siggi,

der wichtige Unterschied ist dieser hier:

$("BD Objekt Sichtbar"):invoke(Wdh, 3)

vs

$("Fahrzeug starten"):invoke(Wdh, i)

Während du für jedes Ereignis eine konstante Pause von 3 Sekunden verwendest, übergebe ich für jedes Ereignis eine andere Dauer, und zwar "i", also 1, 2, 3 usw. Dadurch starten die Autos zu unterschiedlichen Zeitpunkten.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...