Jump to content

Animationszustandsabfrage


fzonk

Empfohlene Beiträge

Hallo @Neo

Ich weiß das Thema ist nicht ganz neu für dich, aber ich würde es gern mal wieder auf den Tisch bringen. Bei den Animationen kann man aktuell abfragen ob diese gestartet oder gestoppt sind und daraus weiter Aktionen erstellen. Nun habe ich den Fall, dass ich aber nur an einer bestimmten Stelle eine Aktion auslösen will. Ich habe ein Beispiel erstellt, in diesem sind auch mehrere Ansätze wie es aussehen könnte (beide deaktiviert).

Animationszustand.mbp

Ziel ist es bei der Klappbrücke, dass wenn die Animation endet (bis hierhin funktioniert es) und nur wenn die Brücke geschlossen ist (Animationszustand 0) eine Aktion (in dem Fall das Umschalten der Lampe) aufgeführt wird. Wäre es da nicht sinnvoll, wenn ich auch direkt die Stellung der Animation abfragen könnte. Sinngemäß:

if animations == 0 then

oder

if $("Kleine Klappbrücke").animations["Global"] == 0 then

oder

if animations.state == 0 then

Mir geht es dabei noch nicht mal um Stufen in der Animation (auch wenn ich da ebenfalls bedarf für hätte, um Animationen gezielt an einer Stelle zu stoppen), in dem Konkreten Beispiel geht es „einfach“ nur um die Abfrage 0 oder 1 (Anfang oder Ende). Ich könnte auch mit Hilfsmitteln (Variablen oder sogar der Lampe) zum gewünschten Ziel kommen, finde es aber umständlich. Vielleicht wird es ja doch noch die Möglichkeit der direkten Abfrage noch geben (oder ich finde mal wieder nicht die richtige Lösung).

Vielen Dank

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 30 Minuten schrieb BahnLand:

das Positionieren an eine bestimmte Stelle in der Animation

kannst du meines Wissens jetzt schon haben. Und zwar mit dem Stop-Befehl. Der nimmt ein Argument an für die Position, an der gestoppt werden soll.
Das Resultat ist ein Sprung an diese angegebene Stelle. Wie von dir gewünscht.

Beispiel: Animation positionieren.mbp

Mit der grafischen EV kommt man nur zum Start oder Ende. Schaltet man auf Lua um, dann kann man auch andere Werte benutzen.

Bearbeitet von Goetz
Beispielanlage hinzugefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Goetz,

Danke für Deinen Hinweis.

Das ist zwar erst die "halbe Miete" zu dem, was ich mir gewünscht habe. Denn ich möchte die Animation von einer beliebigen Position, an der die Animation steht, schlagartig auf eine andere fixe Position umschalten können. Ein konkretes Anwendungsbeispiel wäre das Umschalten zwischen den verschiedenen Stirnlicht-Varianten beim schweizerischen RAe TEE II Triebzug.

857378646_Licht-VariantenRAeTEEII.thumb.jpg.b21a58f7b863e111457dfda5e497bff5.jpg

Dort gibt es nämlich folgende Stirnllicht-Zustände, die heute alle jeweils als getrennte Animationen reaisiert sind und damit bei einer "falschen" Bedienung sich gegenseitig negativ beinflussen können:

  1. Stirnbeleuchtung aus
  2. 1 weiße Lampe an (Rangierlicht)
  3. 2 weiße Lampen an (2-Licht-Spitzensignal in Frankreich und Italien)
  4. 3 weiße Lampen an (3-Licht-Spitzensignal in der Schweiz, Deutschland und Österreich)
  5. 1 rote Lampe an (Standlicht am abgestellten Zug)
  6. 2 rote Lampen an (Schlusslicht)
  7. 3 rote Lampen an (Warsignal in der Schweiz zur Ankündigung einer Gefahr für den Gegenzug (Sofort Anhalten!))
  8. 2 gelbe Lampen unten, 1 weiße Lampe oben (ehemaliges 3-Licht-Spitzensignal in den Niederlanden)
  9. 1 weiße und 1 grüne Lampe unten (Ankündigungssignal für außerplanmäßigen Folgezug in Italien)

Diese 9 Stirn- und Schlusslicht-Variaten könnte man in eine einzige Variation stecken, indem man an den Positionen

0.000, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875 und 1.000

jeweils einen Licht-Zustand hinterlegt und dann in der EV entsprechend immer die "passende" Konstellation "ansteuert".

Mit Deinem Anstoß habe ich aber trotzdem eine funktionierende Lösung gefunden. In der grafischen EV lassen sich allerdings nur die Zusände 0 und 1 wie gewollt realisieren, indem man die Animation vorwärts mit Start am Ende (Zielposition 1.000) oder rückwärts mit Start am Anfang (Zielposition 0.000) startet.

Die Zwischenpositionen lassen sich jedoch nur mit Lua ansteuern, indem man das Starten der Animation und das Stoppen direkt hintereinander ausführt:

Unbenannt.JPG.f4c469489f333b05d5f6ce18fb4e1ce0.JPG

Mi dem Start der Animation wird der Startpunkt an die gewünschte Position gelegt. Mit dem unmittelbar nachfolgenden Stop der Animation wird verhindert, dass diese Position verlassen wird.

1594437753_AnmiationmitZwischenzielen.thumb.jpg.30a5704609cd53cbadc568e90d036dee.jpg

Als Demonstrationsbeispiel habe ich die Schiebetür einer meiner Straßenbahnen verwendet, weil man hier die Positionen 0 (Tür geschlossen), 0.25, 0.5, 0.75 (Zwischenpositionen) und 1 (Tür geöffnet) sehr schön erkennen kann, die mit den Buttons im Vordergrund eingestellt werden können. Wer selbst damit etwas herumspielen möchte, kann die beigefügte mbp-Datei starten und sich die ERreignissteueung genauer anschauen.

Animation mit Zwischenzielen.mbp

Viele Grüße
BahnLand

 

Bearbeitet von BahnLand
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Goetz,

ich habe gerade gesehen, dass Du an Deinen besagten Beitrag noch was angehängt hast.

Du hast Recht:
Es funktioniert auch bei meinem Beispiel ohne den Animationsstart. Das Stoppen an einer bestimmten Stelle genügt vollauf.
Nochmals vielen Dank für diesen Hinweis! (y)

Viele Grüße
BahnLand

 

Bearbeitet von BahnLand
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...