Der Charactermancer ist ein Roll20-System, das einen Benutzer durch einen Entscheidungsprozess auf dem virtuellen Tisch führt. Es wurde in den CharakterblätternRoll20 Official DND 5eundRoll20 Official Pathfinderimplementiert.
Übersetzung
Wie in den übrigen Bereichen des Charakterbogens sollten auch im Charaktermancer die Blattstandards befolgt werden. Dazu gehört die Internationalisierung (oder i18n-Übersetzungsschlüssel). Durch Hinzufügen eines Elements zum HTML-Tag kann jedes Element zur Übersetzung bestimmt werden. Lesen Sie hier mehr darüber, wie die Übersetzung funktioniert.
Folien
Einführungsfolie
<charmancer class="sheet-charmancer-intro">
Der Charactermancer funktioniert, indem er eine Reihe von Folien der Reihe nach lädt. Die Folien sind HTML-Blöcke, die in der HTML-Datei des Zeichenblatts enthalten sind. Sie sind mit dem Tag<charmancer>
gekennzeichnet. Jede Folie muss benannt werden, damit sie aufgerufen oder referenziert werden kann. Dies geschieht innerhalb des <charmancer> Tags durch Hinzufügen einer Klasse mit vorangestelltem „sheet-charmancer-“, gefolgt vom Namen der Folie. Folien können dieselben HTML-Elemente und Eingaben wie das Zeichenblatt sowie einige bemerkenswerte Ergänzungen und Ausnahmen enthalten, die unten aufgeführt sind. Folien werden entweder von einem Sheet Worker über die Funktion startCharactermancer(<slide name>) oder von einer anderen Folie über die Schaltfläche „Weiter“ aufgerufen.
Kompendium iFrame
<div class="sheet-compendium-page sheet-example" accept="CategoryIndex:Backgrounds"></div>
In den Folien ist der Kompendium-iFrame verfügbar, mit dem Sie Seiten aus dem Kompendium des Charakterblatts anzeigen können. Wenn einem Tag innerhalb einer Folie die Klasse „sheet-compendium-page“ und außerdem ein Accept-Parameter zugewiesen wird, wird die Folie beim Rendern auch den darin eingebetteten Compendium-iFrame enthalten. Der Accept-Parameter muss mit einer Kompendiumseite aus dem Buch übereinstimmen, das vom Charakterblatt verwendet wird, sonst werden die Daten nicht angezeigt. Der Compendium-iFrame kann von Sheet Worker mithilfe der Funktion „changeCompendiumPage“ dynamisch aktualisiert werden.
Foliennavigation
Nächster Knopf
<button type="submit" value="example">Weiter</button>
Mit der Schaltfläche „Weiter“ gelangen Sie vom Charactermancer zur nächsten Folie. Der Schaltflächentyp muss „Senden“ sein und der Wertparameter muss mit dem Namen einer anderen Folie übereinstimmen. Darüber hinaus wird eine Prüfung durchgeführt, um sicherzustellen, dass alle Charactermancer-Eingaben, die sowohl sichtbar als auch erforderlich sind, einen Wert haben. Der Vorgang kehrt zurück, markiert die erforderlichen Eingaben ohne Werte und fährt nicht mit der nächsten Folie fort.
Zurück-Button
<button type="back" value="example">Zurück</button>
Die Zurück-Schaltflächen funktionieren genauso wie die Weiter-Schaltflächen, mit der Ausnahme, dass „Zurück“ als Typ erforderlich ist und Pflichtfelder nicht validiert werden.
Schaltfläche „Abbrechen“.
<button type="cancel" value="example">Abbrechen Charactermancer</button>
Die Schaltflächen „Abbrechen“ schließen den Charactermancer und kehren zum Charakterblatt zurück. Der Schaltflächentyp muss „Abbrechen“ sein. Es kann seinen Wert über ein Ereignis weitergeben, das durch Klicken auf die Schaltfläche ausgelöst wird und vom Listener auf„mancer:cancel“
gehört werden kann.
Schaltfläche „Fertig stellen“.
<button type="finish" value="example">Änderungen übernehmen</button>
Mit der Schaltfläche „Fertig stellen“ wird der Charaktermanger geschlossen und Sie kehren zum Charakterblatt zurück. Der Schaltflächentyp muss „Fertig stellen“ sein. Durch Klicken auf die Schaltfläche „Fertig stellen“ wird ein Ereignis erstellt, das mit dem Listener on„mancerfinish:name“
abgehört werden kann, der das Charactermancer-Datenobjekt als Argument enthält.
Letzte Folie
Der Name „final“ ist einer besonderen Folie vorbehalten. Die letzte Folie fungiert als Übergang zwischen dem Charaktermanger und dem Charakterblatt. Der Charactermancer wird deaktiviert, sobald die Abschlussfolie aufgerufen wird, ist jedoch weiterhin sichtbar und zeigt den Inhalt der Abschlussfolie an, bisfinishCharactermancer()
aufgerufen wird. Diese Folie ermöglicht es dem Charakterblatt und den Arbeitern, alle Ergebnisse des Charakterbeschwörer-Datenobjekts zu übernehmen und anzuwenden, bevor die Kontrolle an den Spieler zurückgegeben wird.
Charaktermanger-Eingaben
<input type="text" name="comp_example">
Attribute im Charactermancer verwenden eine andere Namenskonvention als das Character Sheet. Charactermancer-Eingaben beginnen mit„comp_“
. Mit der Konvention benannte Eingaben und Auswahlen übergeben ihre Werte automatisch an das Charactermancer-Datenobjekt. Das Datenobjekt kann auf aktuellen und zukünftigen Folien durch Aufrufen der FunktiongetCharmancerData()
referenziert werden und wird auch zur Verwendung als Zeichenblatt im Ereignismancerfinish
ausgegeben.
Charactermancer-Datenobjekt { „first-slide“: { „data“: {}, „values“: {} }, „second-slide“: { „data“: { „choice1“: { „Anzahl der Widgets“: { „Widgets“: 2 }, „Typ der Widgets“: { „Typ“: „Spongy“ } } }, "values": { "choice1": "Widget:Example" }, "repeating": ["<repeating_id1>", "<repeating_id2>"] } }
Das Charactermancer-Datenobjekt speichert während des Prozesses automatisch Daten von Eingaben und wählt auf jeder Folie aus. Die Werte dieser Eingaben und Auswahlen werden im JSON-Format unter dem Namen der Folie und dem Schlüssel „values“ gespeichert. Zusätzlich können „Daten“ von der Funktion getCompendiumData an den Folien-Namespace des Datenobjekts übergeben werden. Wenn auf der Folie sich wiederholende Abschnitte verwendet werden, werden die Wiederholungs-IDs unter dem „Wiederholungs“-Schlüssel dieser Folie gespeichert. Das gesamte Objekt kann jederzeit mit der Funktion getCharmancerData abgerufen werden.
Erforderlich
<input type="text" name="comp_example" required>
Eingaben und Auswahlen, die in ihrem Tag als „erforderlich“ markiert sind, ermöglichen es Benutzern nicht, die aktuelle Folie fertigzustellen und zur nächsten zu wechseln, bis diesem Feld ein Wert zugewiesen wird. Erforderliche Felder, die bei Verwendung der Schaltfläche „Weiter“ leer gelassen wurden, erhalten die Klasse„sheet-hilite“
und der Benutzer gelangt nicht zur nächsten Folie. Erforderliche Eingaben erzwingen keine Anforderung, wenn sie in einem bedingten Abschnitt ausgeblendet wurden. Gruppen von Elementen können nach Bedarf erstellt werden. Wenn „Required“ zum Tag eines übergeordneten Divs hinzugefügt wird, werden alle darin enthaltenen untergeordneten Eingaben und Auswahlen ebenfalls erforderlich.
Kompendium bestückte Auswahlen
<select name="comp_race" accept="Category:Items">
Die Auswahl innerhalb der Folien kann automatisch mit Optionen aus dem Roll20-Kompendium gefüllt werden. Die Auswahl erfordert den Parameter „Accept“, der eine Compendium-kompatible Suchzeichenfolge enthält. Komplexe Multi-Attribut-Suchen können verwendet werden, um spezifische gefilterte Ergebnisse bereitzustellen. Bei auf diese Weise ausgefüllten Optionen wird die Quellerweiterung nach dem Ergebnis in Klammern eingefügt.
Bedingte Abschnitte
<div class="sheet-choice sheet-example">
Bedingte Abschnitte sind HTML-Tags mit dem Tag „sheet-choice“. Diese Abschnitte werden standardmäßig ausgeblendet, wenn die Folie gerendert wird. Sie können mit den FunktionenshowChoices(<class name>)
bzw.hideChoices(<class name>)
ein- oder ausgeblendet werden.
Aktionsknopf
<button type="action" name="act_starting_gold"></button>
Mit dem Charactermancer-Update wurden Aktionsschaltflächen eingeführt. Diese Schaltflächen können mit dem Ereignis-Listener „on „clicked““ überwacht werden. Sie sind nicht auf den Charaktermanger beschränkt und können auch auf dem Charakterbogen verwendet werden. Die Schaltfläche muss vom Typ „Aktion“ sein und dem Namen der Schaltfläche mussact_
vorangestellt sein, damit er gehört wird.
Charactermancer-Zuhörer
Diese Listener arbeiten für Charactermancer-Änderungen und haben Zugriff auf Charactermancer-Funktionen.
mancerchange
on("mancerchange:choice_1 mancerchange:choice_3", function(eventinfo) {...});
Der Mancerchange-Listener wird ausgelöst, wenn die Werte von Charactermancer-Eingaben geändert werden. Es übergibt ein Argument mit den folgenden Eigenschaften:
- currentStep:"charmancer-intro" Die aktuelle Folie, auf der sich der Benutzer befindet
- newValue: „Races:Elf“ Der Wert, in den die Charactermancer-Eingabe geändert wurde
- sourceType:"player" Ob die Änderung durch einen "Worker" oder den "Player" ausgelöst wurde
- triggerName:"race" Der Name der geänderten Charactermancer-Eingabe
Seite:<slide name>
on("page:charmancer-intro", function(eventinfo) {...});
Der Seiten-Listener wird beim Öffnen der Folie ausgelöst, wenn er entweder über die Schaltfläche „Weiter“ oder die Funktion „startCharmancer“ aufgerufen wird. Es übergibt ein Argument mit den folgenden Eigenschaften:
- sourceType:"player" Ob die Änderung durch einen "Worker" oder den "Player" ausgelöst wurde
- triggerName:"charactermancer-intro" Der Name der gerade geöffneten Charactermancer-Folie
angeklickt:<action button name>
on("clicked:action_button", function(eventinfo) {...});
Der angeklickte Listener wird ausgelöst, wenn auf eine Aktionsschaltfläche geklickt wird. Es übergibt ein Argument mit den folgenden Eigenschaften:
- triggerName:"clicked:action_button" Der Name der Aktionsschaltfläche, auf die geklickt wurde
mancerroll:<roll button name>
on("mancerroll:roll_stats", function(eventinfo) {...});
Dieser Listener wird ausgelöst, wenn im Charactermancer auf eine Roll-Schaltfläche geklickt wird. Es übergibt ein Argument mit den folgenden Eigenschaften:
-
currentStep:"charmancer-intro"
Die aktuelle Folie, auf der sich der Benutzer befindet - roll: Ein JSON-Objekt, das die Ergebnisse des Rolls enthält.
- triggerName:"roll_stats" Der Name des Charactermancer-Wurfs, der den Listener ausgelöst hat
Blattzuhörer
Diese Listener werden ausgelöst, nachdem der Charactermancer beendet wurde, und haben Zugriff auf die normalen Sheet-Worker.
Mancer: Abbrechen
on("mancer:cancel", function(eventinfo) {...});
Der mancer:cancel-Listener wird ausgelöst, wenn ein Spieler den Charactermancer über die Schaltfläche „Abbrechen“ verlässt. Dies kann verwendet werden, wenn ein Benutzer den Charactermancer neu startet. Es übergibt ein Objekt als Argument mit dem Wert des Namens der Folie, auf der der Benutzer den Charactermancer verlassen hat:
- Wert: „slide1“
mancerfinish:<name>
on("mancerfinish:l1-mancer", function(eventinfo) {...});
Der Mancerfinish-Listener wird ausgelöst, wenn ein Spieler den Charactermancer über die Schaltfläche „Fertig stellen“ verlässt. Es übergibt ein Objekt als Argument mit demselben Wert wie das Charactermancer-Datenobjekt. Hier werden die Entscheidungen des Charaktermangers auf das Blatt selbst angewendet. Hier steht die FunktionsetCharmancerText()
zur Verfügung, mit der Sie die „endgültige“ Folie aktualisieren können, während die Änderungen angewendet werden.
Funktionen
Normale Sheet-Worker sind deaktiviert, während der Charactermancer aktiv ist, mit den folgenden Ausnahmen:
setAttrs()
ist weiterhin verwendbar, während der Charactermancer aktiv ist, obwohl seine Funktion anders ist, kann er nur Werte für die aktuelle Charactermancer-Folie festlegen. Funktionen, die auf Blattattribute zugreifen, ohne sie zu ändern(wie getAttrs()
undgetSectionIDs())
funktioniert wie gewohnt. getCompendiumPage()
undgetCompendiumQuery()
funktionieren sowohl für Sheet als auch für Charactermancer.
Ein Hinweis zu Selektoren: Viele dieser Funktionen verwenden einen CSS-Selektor, um das relevante HTML-Element auf der Folie zu finden. Der erste Teil dieses Selektors muss eine Klasse sein, der Rest dieses Selektors kann jedoch jede gültige JQuery-Selektorsyntax verwenden.
Diese Funktionen sind nur verfügbar, wenn der Charactermancer aktiv ist:
startCharactermancer(<slide name>)
startCharactermancer("first-slide");
Die Funktion startCharactermancer startet den Charactermancer. Dadurch wird das Charakterblatt ausgeblendet und der Charactermancer geladen. Es wird den HTML-Code der benannten Folie laden, die als erstes Argument übergeben wurde, und den Listener zum Öffnen der Seite für diese Folie auslösen.
setCharmancerText(<update object>);
setCharmancerText({"class_example":"Hallo Welt!"});
Mit der FunktionsetCharmancerText
können Sie Abschnitte Ihrer aktuellen Folie mit neuem Text aktualisieren. Als Argument an die Funktion wird ein Objekt übergeben, bei dem die Schlüssel Selektoren für die zu aktualisierenden Elemente sind und die Werte den Text darstellen, der den vorhandenen Inhalt dieser Abschnitte ersetzt. Diese Funktion ermöglicht die Verwendung von HTML-Tags. Der gesamte Text durchläuft dieselbe Bereinigungsfunktion, die auch für den Rest des Zeichenblatts verwendet wird (die beispielsweise KlassennamenBlatt
voranstellt).
changeCompendiumPage(<IFrame selector>, <Compendium Page Name>)
changeCompendiumPage("sheet-iframe", "Willkommensseite");
Mit der Funktion „changeCompendiumPage“ können Sie die Kompendiumseite, die in einen Kompendium-iFrame auf Ihrer aktuellen Folie geladen wird, dynamisch ändern. Das erste Argument muss mit dem Namen der iFrame-Klasse übereinstimmen und das zweite Argument übergibt die zu rendernde Kompendiumseite. Es wird empfohlen, die Kategorie der Seite zu verwenden, um eine eindeutige Übereinstimmung sicherzustellen. Beispielsweise kann „Druide“ mit einer Seite sowohl in der Kategorie „Klassen“ als auch in der Kategorie „NPC“ übereinstimmen, aber „Klassen:Druide“ ist eine eindeutige Seite.
changeCharmancerPage(<slide name>, <callback>)
changeCharmancerPage("options_slide", function() {...});
Diese Funktion ändert die aktuelle Folie des Charactermancer. Das erste Argument ist der Name der Folie. Es akzeptiert einen Rückruf, der nach dem Laden der Folie aufgerufen wird.
setAttrs(<update object>)
setAttrs({"test_attribute": 2})
Die Funktion setAttrs funktioniert für Charactermancer-Eingaben genauso wie für Charakterblattattribute, mit den folgenden Ausnahmen. Während der Charactermancer aktiv ist, kann er nur zum Aktualisieren von Charactermancer-Eingaben verwendet werden und löscht Radio- und Kontrollkästcheneingaben, wenn der Wert, auf den sie eingestellt sind, nicht mit dem/den angegebenen Wert(en) übereinstimmt. Diese Attribute müssen auf der Folie eingegeben werden, sonst werden ihre Werte beim Übergang zur nächsten Seite aus dem Charactermancer-Datenobjekt gelöscht.
setCharmancerOptions(<Class Name>, <Select Options>, <Settings>, <Callback>); </pre>
setCharmancerOptions("select-class", "Category:Items Type:Weapons", {add:["Magic Longsword","Axe of Amazingness"], Category:"Items"});
Mit der Funktion „setCharmancerOptions“ können Sie Charactermancer Selects oder Radio Inputs nach Bedarf mit dynamischen Optionen aktualisieren. Die Funktion erfordert die ersten beiden Argumente, kann aber bis zu vier akzeptieren. Das erste Argument ist der Klassenname der Charactermancer-Auswahl, die Sie mit Optionen füllen möchten. Dem zweiten Argument kann ein Array vordefinierter Optionen oder mit einer Kompendium-Suchzeichenfolge übergeben werden, um eine dynamische Liste von Optionen aus dem Kompendium zu generieren. Das dritte Argument akzeptiert mehrere verschiedene optionale Einstellungen, die unten beschrieben werden. Das letzte Argument ist ein Rückruf, der nach der Rückkehr von setCharmancerOptions ausgeführt wird. Dieser Rückruf ruft einen Parameter ab, der ein Array der gefundenen/gefüllten Werte ist. Bei Verwendung mit type='radio'-Eingaben funktioniert die Funktion genauso, findet jedoch alle Bereiche mit diesem Namen auf der Folie und füllt sie stattdessen mit<label><input type="checkbox">Inhalt</label>
.
- Kategorie: Kategoriename der Optionen
- deaktivieren: Array von zu deaktivierenden Optionen, die mit den Werten übereinstimmen müssen
- Ausgewählt: Wert der ursprünglich ausgewählten Option
- add: Array von Zusatz- oder sonstigen Optionen, die am Ende der Auswahloptionen eingefügt werden sollen
- show_source: Zeigt Optionen mit Kompendiumerweiterungsinitialen in Klammern an (nur verfügbar, wenn eine Kompendiumabfrage als Auswahloption verwendet wird)
deaktivierenCharmancerOptions(<Class Name>, <Select Options>, <Settings>);
disableCharmancerOptions("select-class", ["one","two"]);
DerdisableCharmancerOptions
funktioniert ähnlich wiesetCharmancerOptions
. Es akzeptiert nur eine Reihe von Optionen zum Deaktivieren von Charactermancer Selects oder Radio Inputs. Die Funktion deaktiviert eine aktuell ausgewählte Option nicht. Wenn zwei oder mehr Auswahlen dieselben Werte haben, werden alle gleichzeitig deaktiviert. Durch die Übergabe eines leeren Arrays wird alles wieder aktiviert.
showChoices([<class name>]);
showChoices(["sheet-test","sheet-test2]);
Die Funktion showChoices deckt versteckte bedingte Abschnitte mit der Klassesheet-choice
auf. Es akzeptiert ein Argument als Array von Klassennamen, die von bedingten Abschnitten angezeigt werden sollen.
hideChoices([<class name>]);
hideChoices(["sheet-test","sheet-test2]);
Die Funktion hideChoices verbirgt aktuell sichtbare bedingte Abschnitte mit der Klassesheet-choice
. Es akzeptiert ein Argument als Array von Klassennamen, damit bedingte Abschnitte ausgeblendet werden können. Wenn kein Argument angegeben wird, werden alle Auswahlmöglichkeiten auf der aktuellen Folie ausgeblendet.
getCompendiumPage(<Compendium Page Name>, [<Values>], <Callback>)
getCompendiumPage(<code> Compendium Name", function(data) {...});
Die getCompendiumPage-Funktion ruft die Datenattribute einer Kompendiumseite ab und ermöglicht Ihnen die Übergabe dieser Daten sowohl an das Charactermancer-Datenobjekt als auch an eine Rückruffunktion. Das erste Argument, das die Funktion akzeptiert, ist der Name der Kompendiumseite, von der Sie die Daten abrufen möchten, oder ein Array von Seiten. Auch hier empfiehlt es sich, das Format<category>:<pagename>
zu verwenden, um ein korrektes Ergebnis zu gewährleisten. Die dritte Option ist ein Rückruf, der das Datenobjekt als Argument übergibt.
Wenn diese Funktion immancerchange:
Ereignis für ein Attribut aufgerufen wird, werden alle Daten im Abschnitt „data“ des JSON-Objekts der aktuellen Folie unter einem Schlüssel gespeichert, der mit dem Namen dieses Attributs übereinstimmt. Um sicherzustellen, dass die Daten ordnungsgemäß gespeichert werden, wird empfohlen, sicherzustellen, dassgetCompendiumPage
der erste asynchrone Blatt-Worker ist, der in diesem Ereignis aufgerufen wird. Werden mit dieser Funktion mehrere Seiten abgerufen, wird nur die erste in den Daten gespeichert. Wenn für das erste Argument eine leere Zeichenfolge verwendet wird, werden die aktuell gespeicherten Daten für dieses Attribut gelöscht (jedoch nicht der Wert des Attributs).
Diese Daten werden nicht in Firebase gespeichert. Vielmehr werden alle Datenfelder auf einmal aus dem Kompendium abgerufen, wenn der Charactermancer zum ersten Mal geöffnet wird.
getCompendiumQuery(<Compendium Query String>, <Callback>)
getCompendiumQuery("Category:Spells Level:1|2|3 Class:*Bard", function(data) {...});
Diese Funktion funktioniert ähnlich wie getCompendiumPage, außer dass sie eine Abfragezeichenfolge (oder ein Array von Abfragen) verwendet, um Ergebnisse abzurufen, und keine Daten im Charactermancer-Objekt speichert.
getCharmancerData()
var data = getCharmancerData();
getCharmancerData gibt den aktuellen Wert des Charactermancer-Datenobjekts zurück.
deleteCharmancerData([<pages>], <Callback>)
deleteCharmancerData(["slide1", "slide3", "slide4"], function(data) {...})
Die FunktiondeleteCharmancerData
akzeptiert zwei Argumente. Das erste Argument ist ein Array von Foliennamen, um alle zugehörigen Daten und Werte des Charactermancer-Datenobjekts zu löschen und die Folie so zu löschen, als ob sie nie besucht worden wäre. Wenn keine Folien als Argument übergeben werden, entfernt die Funktion alle Daten und Auswahlmöglichkeiten. Das zweite Argument ist ein Rückruf, der ausgeführt wird, nachdem die FunktiondeleteCharmancerData
abgeschlossen ist.
finishCharactermancer() =
finishCharactermancer()
Die Sonderfallfunktion „finishCharactermancer“ überführt die letzte Folie zurück in das Zeichenblatt.
setSectionOrder(<Repeating Section Name>, <Section Array>, <Callback>);
(Normale Sheet-Worker-Funktion, keine Charactermancer-Funktion)
setSectionOrder("proficiencies", final-array, callbackFunction);
Die setSectionOrder-Funktion ermöglicht die Reihenfolge sich wiederholender Abschnitte nach Ihren Wünschen. Die Funktion akzeptiert einen sich wiederholenden Abschnitt (diesem Wert wirdvorangestellt), die Methode, nach der basierend auf den sich wiederholenden Artikeldaten sortiert werden soll, und eine optionale Rückruffunktion.
Charaktermanger-Wiederholungsabschnitte
Wiederholte Abschnitte im Charactermancer funktionieren anders als die sich wiederholenden Abschnitte in Charakterbögen. Anstatt für ein bestimmtes Element auf der Seite (die <fieldset>) definiert zu sein, sind sich wiederholende Abschnitte im Charactermancer HTML-Codeausschnitte, die an jedes Element in der aktiven Charactermancer-Folie angehängt werden können (auch innerhalb eines anderen sich wiederholenden Abschnitts). Dieser HTML-Code wird auf die gleiche Weise bereinigt wie der Rest des Blatts.
Wenn der Folie ein Abschnitt hinzugefügt wird, wird für diese Zeile eine eindeutige Zeilen-ID generiert. Diese ID wird als Klasse auf das übergeordnete Element dieses Abschnitts angewendet und zum Umbenennen aller Eingaben, Aktionsschaltflächen oder Rollschaltflächen in diesem Abschnitt verwendet. Die Namenskonvention lautet: „repeating_123456789_row_input“, wobei „row“ der Name des wiederholten Abschnitts und „input“ der Name der Eingabe ist. Die Werte aus den Eingaben in sich wiederholenden Abschnitten werden zusammen mit den übrigen Werten dieser Folie unter dem Schlüssel „values“ im Charactermancer-Datenobjekt gespeichert. Der Name des sich wiederholenden Abschnitts (der Name des übergeordneten Abschnitts, nicht jeder darin enthaltene Wert) wird dem „wiederholenden“ Array für jede Folie hinzugefügt.
Diemancerchange
,mancerroll,
und angeklickten Zuhörer können Änderungen an einem sich wiederholenden Abschnitt anhören. Bei einer Änderung auf„repeating_123456789_row_input
wird eine Änderung für das Attribut selbst,mancerchange:repeating_row_input
, und den Abschnitt, in dem es enthalten ist,mancerchange:repeating_row
, ausgelöst. Wenn sich dieser Abschnitt innerhalb eines anderen Wiederholungsabschnitts befindet, wird auch für den übergeordneten Wiederholungsabschnitt ein Ereignis ausgelöst. Die Ereignisinformationen für einen sich wiederholenden Abschnittswechsel enthalten zusätzlich zu den oben genannten normalen Elementen einige neue Elemente:
-
sourceAttribute:"repeating_123456789_row_input"
Das spezifische Attribut, das geändert wurde -
sourceSection:"repeating_row"
Der Name des sich wiederholenden Abschnitts, in dem sich das Quellattribut befindet -
triggerName:"repeating_row"
Der Name des Listeners, der ausgelöst wurde
Diese Abschnitte sind nicht dauerhaft, das heißt, wenn der Benutzer die Folie verlässt und sie erneut aufruft, wird die Folie ohne die sich wiederholenden Abschnitte geladen und verlässt sich auf die automatischen Änderungsereignisse, um Arbeiter zu veranlassen, diese Abschnitte wieder zur Seite hinzuzufügen (siehe Abschnitt unten). über das erneute Betrachten von Folien).
Abschnittsdefinition
<charmancer class="sheet-repeating-row">
<charmancer class="sheet-repeating-row">
Um einen sich wiederholenden Abschnitt zu definieren, platzieren Sie den Codeausschnitt innerhalb eines<charmancer>
Tags und verwenden Sie dazu eine Klasse, die mit den Schlüsselwörtern „sheet-repeating-“ beginnt. Im obigen Beispiel wird der Code innerhalb der Tags<charmancer>
als sich wiederholender Abschnitt namens „row“ definiert.
addRepeatingSection(<class_name>, <section_name>, <new_name>, <callback>)
addRepeatingSection("sheet-class", "row", "spellrow", function(sectionid) {...});
Diese Funktion hängt den angegebenen Wiederholungsabschnitt an das angegebene Zielelement an. Das erste Argument ist der Selektor für das Zielelement, das zweite gibt an, welcher Wiederholungsabschnitt hinzugefügt werden soll. Das dritte Argument ist optional. Es definiert einen neuen Abschnittsnamen für diesen bestimmten Abschnitt. Wenn es weggelassen wird, verwendet der Abschnittsname einfach den zweiten Parameter als Namen. Der Rückruf für diesen Abschnitt erhält die Abschnitts-ID, die dem Abschnitt zugewiesen wurde.
clearRepeatingSections(<target>, <callback>)
clearRepeatingSections("sheet-class", function() {...});
Diese Funktion löscht alle sich wiederholenden Abschnitte aus dem durch das erste Argument angegebenen Element. Es entfernt den HTML-Code selbst sowie alle entsprechenden Werte im Charactermancer-Datenobjekt.
clearRepeatingSectionById([<section_ids>], <callback>)
clearRepeatingSectionById([<id1>, <id2>, ...], function() {...});
Diese Funktion ähnelt der Funktion „clearRepeatingSections“, löscht jedoch nur bestimmte sich wiederholende Abschnitte, die durch das Array im ersten Argument definiert werden. Außerdem werden alle sich wiederholenden Abschnitte innerhalb der angegebenen Abschnitte gelöscht.
getRepeatingSections(<target>, <callback>)
getRepeatingSections("sheet-class", function(repeating) {...});
Diese Funktion gibt detailliertere Informationen zu sich wiederholenden Abschnitten auf der aktuellen Folie zurück. Das erste Argument ist ein Selektor für das Zielelement. Dies wird verwendet, um eine Liste der sich wiederholenden Abschnitte innerhalb dieses Elements abzurufen. Wenn dies weggelassen wird, gibt die Funktion alle sich wiederholenden Abschnitte auf dieser Folie zurück. Die an den Rückruf zurückgegebenen Daten enthalten auch ein JSON-Objekt, das die Struktur der sich wiederholenden Abschnitte zeigt und detailliert angibt, welche Abschnitte sich in anderen Abschnitten befinden.
Folien noch einmal ansehen
Wenn der Benutzer eine Folie verlässt und sie später erneut aufruft, löst der Charactermancer automatisch Änderungsereignisse für die gespeicherten Werte auf der Seite aus. Dies soll es den Blattarbeitern ermöglichen, die Rutsche zu feuern und in ihren vorherigen Zustand wiederherzustellen. Dies ist notwendig, da die von den Funktionen, die HTML manipulieren (wiesetCharmancerText
undaddRepeatingSection
), vorgenommenen Änderungen nicht bestehen bleiben. Es ist wichtig zu bedenken, dass diese Arbeiter möglicherweise feuern, wenn sie die Rutsche erneut besuchen. Planen Sie die Mitarbeiter entsprechend. Beachten Sie, dass beim erneuten Aufrufen einer Folie die vorherigen, sich wiederholenden Abschnitts-IDs für Abschnitte mit übereinstimmenden Namen wiederverwendet werden. Daher sollten diese IDs konstant bleiben.
Pseudoattribut Charactermancer_step
Das Attribut„charactermancer_step
ist ein Pseudoattribut wie „character_name“. Auf diese Weise können Sie den Schritt festlegen, den der Charactermancer beim nächsten Start öffnen soll. Dieses Attribut kann durch eine normale FunktionsetAttrs
gesetzt werden und kann nicht gesetzt werden, während der Charactermancer aktiv ist.