gibt es die Möglichkeit das ich den Inhalt einer (z.B. Integer) Variablen (per Script) ändern kann, OHNE das das Ereignis das daran hängt (dies triggert „bei Änderung“ ein anderes Script) ausgelöst wird. Spricht, kann ich EINMALIG (z.B. bei der nächsten Änderung, oder bei einer bestimmten) das Auslösen des Ereignisses unterdrücken? Ich hänge sonst immer (in meinem Fall) in einer Endlosschleife!
Hier mein exemplarisches Beispiel: Ich habe die Variable „Auswahl“ (die wird letztlich als Auswahlschalter (mit 3 Wahlmöglichgkeiten) im WF dargestellt). Wenn ich im WF die entsprechende Auswahl treffe wird das Aktionscript getriggert das bei mir nur zur Änderung der Visusalisierung benutzt wird. Die eigentliche Weiterverarbeitung soll in dem Script „Weiteres Auswahlscript“ erfolgen, das nun mit Hilfe des Ereingises getriggert wird. NUN gibt es für mich einen „Spezialfall“ bei dem ich die ursprüngliche Integervariable ändern will, ohne das (zumindest) das Ereignis getriggert wird (aber nach der Änderung wieder alles wie gehabt läuft).
Das ist schlechtes Design, das Aktionsskript sollte die Verarbeitung komplett übernehmen, weil nur dann Fehler bei der Verarbeitung in der Visu zurück gemeldet werden.
Siehe auch Doku zu „Schlechte Aktionsskripte“:
Oh je den Fehler habe ich vor vielen Jahren auch gemacht. Und mir die Haare gerauft wegen der Sache mit den Endlosschleifen. Und irgendwelche kruden Workarounds gemacht so wie oben vorgeschlagen.
Hi,
ich benutze auch Aktionsscripte die dann direkt in einer Visu geschaltet werden können oder mit RequestAction auch von einem anderen Script. Wenn man statt RequestAction SetValue benutzt kann man den Wert ändern ohne das die Aktion ausgeführt werden aber in der Visu ändert sich die Ansicht. Wenn man den Wert direkt in der Console ändern will so wird man gefragt ob simulieren oder schalten.
Ganz genau. Ein Auswerteskript welches also durch „andere“ Quellen die Variable nur setzen soll, benutzt SetValue.
Weniger abstrakt, als Beispiel mit einem Aktor:
Das Aktionsskript sendet den Befehl an den Aktor (und schaltet nicht die Variable) und das Auswerteskript verarbeitet die Rückmeldung vom Aktor und setzt die Variable.
Michael