Jump to content

Empfohlene Beiträge

Geschrieben

Hallo, noch eine Frage vor den Festtagen:
Wie spreche ich eine Benutzerdefiniertes Ereignis mit einer Variablen an? Wie das mit einem Objekt geht weiß ich inzwischen.

-- Objekt mit einer Variable ansprechen
local i = 1
local objWeiche = layout:getEntityByName("Weiche "..i)
objWeiche.state = 1

-- Benutzerdefiniertes Ereignis mit einer Variable auslösen ??

$("BD Ausfahrt Gleis 1"):invoke()

Ich möchte den Bezeichner "BD Ausfahrt Gleis 1" in Zeile 8 durch eine Variable ersetzen.

Gruß Siggi

Geschrieben

Hallo Siggi,

Du willst den Namen des benutzerdefinierten Ereignisses, welches zu auslösen willst, einer Variablen entnehmen?

Die Ereignisse werden (ebenso wie auch Objekte) nicht direkt über ihren Namen referenziert. Hinter allen Angaben mit vorangestelltem Dollar-Zeichen verbergen sich Adressen (die nur zur besseren Lesbarkeit namentlich dargestellt werden.) Du kannst daher den Namen nicht einfach durch eine Variable ersetzen, sondern müsstest zunächst anhand des Namens die Adresse des benutzerdefinierten Ereignisses ermitteln. Ähnlich, wie du es auch schon in der dritten Zeile für das Weichenobjekt tust.

Das scheint mir aber überhaupt nicht sinnvoll.
Kannst du bitte mal beschreiben, worauf du letztlich aus bist? Vielleicht gibt es einen eleganteren Weg als den Ereignisnamen per Variable zu übergeben.

Du könntest beispielsweise für alle Fälle ein und dasselbe Ereignis verwenden und in der Klammer (hinter invoke) ein Argument übergeben, anhand dessen du im Ereignis unterscheidest, welchen Weg du einschlagen willst.

Gruß
Götz

Geschrieben
vor 10 Stunden schrieb Goetz:

Kannst du bitte mal beschreiben, worauf du letztlich aus bist? Vielleicht gibt es einen eleganteren Weg als den Ereignisnamen per Variable zu übergeben.

Guten Morgen Götz,

danke für deine Antwort!
Ich habe 3 Gleise im Bahnhof und für jedes Gleis die Aktionen zur Abfahrt des Zuges in ein Benutzerdefiniertes Ereignis gepackt (Weichen, Signal stellen, Variablen belegen..). In bestimmten Situationen wird nun ein entsprechendes Gleis freigegeben. Ich dachte, es gibt in Lua eine Methode, ähnlich wie für die Objekte, auch für Ereignisse.
Die Übergabe über das Argument <Voke> kenne ich auch, nur dann müsste ich wieder im Ereignis über <if then> die Wege trennen und das wollte ich vermeiden. Leider gibt es in Lua nicht die <select case> Methode.
Aber jetzt feiern wir erst mal Weihnachten!
Die und deiner Familie besinnliches Feiertage.

Siggi

Geschrieben
vor 2 Stunden schrieb siggi:

Leider gibt es in Lua nicht die <select case> Methode.

Aber es gibt Tabellen. Wenn du also dein "select" Argument so gestaltest, dass du es als Tabellenindex verwenden kannst, dann musst du keine Fallunterscheidung treffen. Dann nimmst du einfach das, was in der Tabelle steht. 

Du kannst beispielsweise die unterschiedlichen Wege tabellarisch anlegen. 

Tabellen sind der Schlüssel zu Lua. 

Geschrieben

Danke für eure Antworten,

im aktuellen Fall habe ich es nach dem ersten Vorschlag von Götz gelöst.

vor 13 Stunden schrieb Goetz:

Du könntest beispielsweise für alle Fälle ein und dasselbe Ereignis verwenden und in der Klammer (hinter invoke) ein Argument übergeben, anhand dessen du im Ereignis unterscheidest, welchen Weg du einschlagen willst.

 

 

vor 6 Minuten schrieb Goetz:

Tabellen sind der Schlüssel zu Lua. 

Ich habe auch schon viel mit Tabellen gelöst, nur noch nicht Ereignisse in Tabellen das werde ich dann als nächsten lernen.

Euch noch schöne Feiertage.
 

Siggi

 

Geschrieben (bearbeitet)
vor einer Stunde schrieb HaNNoveraNer:

Wo liegt der Fehler?

in der falschen Adressierung. SelectCase ist keine Lua Tabelle. Sie gehört dem MBS.

$("Ereignisse").variables["SelectCase"][1]:invoke()      

korrigierte Fassung:   Ereignis umschalten.mbp

Bearbeitet von Goetz

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...