API: Ereignisse

Es gibt verschiedene Arten von Ereignissen, auf die Sie reagieren können. Im Allgemeinen verfügt jeder Objekttyp über ein entsprechendes Ereignis für Änderungen, Hinzufügungen und Entfernungen. Jedes Ereignis wird einmal pro Objekt, das sich ändert, ausgelöst. Wenn sich mehr als eine Eigenschaft am Objekt gleichzeitig ändert, wird nur ein „globales“ Ereignis (z. B. change:graphic) ausgelöst.


Rückrufparameter

Wenn Sie ein Ereignis abhören, erstellen Sie eine Funktion namensCallback, die jedes Mal ausgeführt wird, wenn das Ereignis eintritt. Die Rückruffunktion empfängt mehrere Parameter, bei denen es sich um Objekte handelt, die Ihnen Informationen über das Ereignis mitteilen, damit Sie entscheiden können, was zu tun ist.

Die Rückrufparameter für jedes Ereignis variieren, umfassen jedoch:

obj

Das Objekt, das geändert wurde. Alle Änderungen, die Sie an diesem Objekt vornehmen, werden auch im Spiel gespeichert. Wenn Sie also ein Grafikobjekt nach links verschieben möchten, ändern Sie die Eigenschaftleftvonobjmitset.

  • obj.get("property")gibt den aktuellen Wert für die Eigenschaft zurück.
  • obj.set("property", "newvalue")legt einen neuen Wert für die Eigenschaft fest. Wenn Sie mehrere Eigenschaften gleichzeitig ändern, können Sie ein Objekt übergeben:obj.set({left: 10, top: 20});


vor

Dies ist ein Objekt der Eigenschaften vonobj, wie sie waren, bevor aufgrund dieses Ereignisses Änderungen vorgenommen wurden. Nützlich, um festzustellen, „wie stark“ sich eine Eigenschaft geändert hat.

HINWEIS:Dies ist ein Basisobjekt, daher greifen Sie auf die Eigenschaften mithilfe der Klammernotation zu:prev["bar1_value"], NICHT mithilfe der Set- oder Get-Funktionen.


Veranstaltungsbestellung

Ereignisse werden synchron ausgelöst (d. h. jede Funktion startet erst, wenn die vorherige beendet ist), und zwar in der Reihenfolge von der ersten zur letzten Grenze und auch von der spezifischen Eigenschaft zum allgemeinen Objekt. Also Folgendes gegeben:

on("change:graphic", function1);
on("change:graphic", function2);
on("change:graphic:left", function3);

Wenn sich die Eigenschaft der Objekteundgeändert hätte, wäre die Reihenfolge Funktion3, dann Funktion1, dann Funktion2.

Wenn Sie außerdem mehrere Skripts in Ihrer Kampagne haben, werden die Skripts in derselben Reihenfolge geladen, in der sie auf Ihrer Seite „Kampagnenskripte“ erscheinen, von links nach rechts.

Hinweis: Ereignisse werden nur durch Änderungen ausgelöst, die von Spielern/dem Spielleiter des Spiels vorgenommen wurden. Ereignisse werden nicht durch API-Änderungen ausgelöst. Wenn also ein Spieler eine Figur auf der Tischplatte bewegt, erhalten Sie ein „change:graphic“-Ereignis. Wenn du die Eigenschaft desselben Bildes in einem Mod (API) Skript änderst, wird kein "change:graphic" Ereignis ausgelöst.


Kampagnenereignisse

bereit

Dieses Ereignis wird ausgelöst, nachdem alle aktuellen Daten für die Kampagne geladen wurden. Wenn Sie also eine Liste aller Objekte in einer Kampagne oder ein bestimmtes Objekt finden möchten, das sich bereits in der Kampagne befindet, achten Sie darauf, erst danach zu suchen, nachdem das Ready-Ereignis ausgelöst wurde. Wenn Sie außerdem anadd-Ereignisse (z. B.add:graphic) binden, bevor dasready-Ereignis ausgelöst wird, erhalten Sie Add-Ereignisse für Objekte, die bereits in der Kampagne vorhanden waren.

on("ready", function() {
  var tokenThatAlreadyExisted = getObj("graphic", "-ABc123");
});

change:campaign:playerpageid

Wird immer dann ausgelöst, wenn sich die Seite ändert, auf der sich die Spieler gerade befinden.

change:campaign:turnorder

Wird immer dann ausgelöst, wenn sich die Zugreihenfolgeliste für die Kampagne ändert.

change:campaign:initiativepage

Wird immer dann ausgelöst, wenn die Zugreihenfolge für eine Seite ausgeblendet oder angezeigt wird. Dies ist möglicherweise nicht mit der ID der aktuell aktiven Seite identisch. Wenn dies auf false gesetzt ist (einschließlich wenn ein Mod (API) Skript es auf false setzt), wird die Zugreihenfolge für alle Spielleiter/Spieler geschlossen. Wenn Sie eine gültige Seiten-ID festlegen, wird sie für alle GMs/Spieler geöffnet.


Objektereignisse

ändern:Grafik

Wird immer dann ausgelöst, wenn sich ein Grafikobjekt (fast jede Art von Objekt auf der Tischplatte, einschließlich Spielsteinen, Karten und Karten) ändert.

Hinweis: Über die API erstellte Grafikobjekte lösen dieses Ereignis beim Erstellen aus.

Rückrufparameter: obj, prev

on("change:graphic", function(obj, prev) {    
  //Hier etwas mit „obj“ machen. „prev“ ist eine Liste vorheriger Werte.
  // Beachten Sie, dass „obj“ und „prev“ unterschiedliche Objekttypen sind. 
  // Um mit obj zu arbeiten, müssen Sie obj.get("name"); verwenden.
  // um mit prev zu arbeiten, können Sie prev["name"] verwenden;
});

change:graphic:(property)

Sie können auch für jede spezifische Eigenschaft des Objekts eine Bindung an ein Ereignis herstellen. Wenn Sie also ein Skript haben, das Sie nur ausführen möchten, wenn sich dieRotationändert, würden Sie Folgendes tun:

on("change:graphic:rotation", function(obj, prev) {    
  //Rotation immer auf 0 zurücksetzen, damit niemand Objekte drehen kann.    
  obj.set("Rotation", 0);
});

add:graphic

Wird immer dann ausgelöst, wenn ein Grafikobjekt zum ersten Mal zur Tischplatte hinzugefügt wird. Wird auch für vorhandene Objekte aufgerufen, wenn die Tischplatte gestartet wird, wenn Sie an dieses Ereignisaußerhalb vonderbereitEreignisse binden.

Rückrufparameter: obj

on("add:graphic", function(obj) {
  //Wird für alle neuen Grafiken aufgerufen, einschließlich derjenigen, die bereits zu Beginn der Spielsitzung vorhanden waren.
});

var gestartet = false;

on("ready", function() {
  on("add:graphic", function(obj) {
    //Wird nur für neue Objekte aufgerufen, die hinzugefügt werden, da vorhandene Objekte bereits vor dem Ready-Ereignis geladen wurden Brände.
  });
  //Sie können auch eine Variable festlegen und Add-Ereignisse ignorieren, bis sie wahr ist.
  gestartet = wahr;
});

destroy:graphic

Wird immer dann ausgelöst, wenn ein Grafikobjekt von der Tischplatte entfernt wurde.

Rückrufparameter: obj

Andere Objekttypen

Es gibt auch Ereignisse für alle anderen Objekttypen und Untertypen, wie zum Beispiel:

ändern:Pfad, hinzufügen:Pfad, zerstören:Pfad, ändern:Text, hinzufügen:Text, zerstören:Text, ändern:Token, hinzufügen:Token, zerstören:Token, ändern:Karte, hinzufügen:Karte, zerstören:Karte

Eine vollständige Liste aller Objekttypen und Untertypen finden Sie unterder Objektreferenz.

War dieser Beitrag hilfreich?
11 von 14 fanden dies hilfreich