API: Eventi

Ci sono diversi tipi di eventi a cui può rispondere. In generale, ogni tipo di oggetto ha un evento corrispondente per le modifiche, le aggiunte e le rimozioni. Ogni evento verrà attivato una volta per ogni oggetto che cambia. Se più proprietà sull'oggetto cambiano contemporaneamente, viene attivato solo un evento "globale" (ad esempio, change:graphic).


Parametri di callback

Quando ascolta un evento, crea una funzione nota come callbackche viene eseguita ogni volta che si verifica l'evento. La funzione di callback riceve diversi parametri, che sono oggetti che le forniscono informazioni che desidera conoscere sull'evento, in modo da poter decidere cosa fare.

I parametri di callback per ogni evento variano, ma includono:

oggetti

L'oggetto che è stato modificato. Qualsiasi modifica apportata a questo oggetto sarà salvata anche nel gioco. Quindi, se desidera spostare un oggetto grafico a sinistra, deve modificare la proprietàleftdiobjutilizzandoset.

  • obj.get("property")restituisce il valore corrente della proprietà.
  • obj.set("property", "newvalue")imposta un nuovo valore per la proprietà. Se sta modificando diverse proprietà contemporaneamente, può passare un oggetto:obj.set({left: 10, top: 20});


prev

Si tratta di un oggetto delle proprietà dell'oggettocome erano prima di qualsiasi modifica dovuta a questo evento. Utile per determinare "quanto" è cambiata una proprietà.

NOTA:Questo è un oggetto di base, quindi accede alle proprietà utilizzando la parentesi-notazione:prev["bar1_value"], NON utilizzando le funzioni set o get.


Ordinazione di eventi

Gli eventi vengono lanciati in modo sincrono (il che significa che ogni funzione non inizierà prima che la precedente sia terminata) in ordine dal primo all'ultimo, e anche dalla proprietà specifica all'oggetto generale. Quindi, considerato quanto segue:

on("cambia:grafica", funzione1);
on("cambia:grafica", funzione2);
on("cambia:grafica:sinistra", funzione3);

Se gli oggettihanno cambiato la proprietà, l'ordine sarebbe funzione3, poi funzione1, poi funzione2.

Inoltre, se ha più script nella sua campagna, gli script vengono caricati nello stesso ordine in cui appaiono nella pagina Script della campagna, da sinistra a destra.

Nota: Gli eventi sono scatenati solo dai cambiamenti apportati dai giocatori / dal GM che gioca il gioco. Gli eventi non saranno attivati dalle modifiche dell'API. Quindi, se un giocatore sposta un pezzo sul piano del tavolo, lei riceve un evento "change:graphic". Se modifichi la stessa proprietà grafica in uno script Mod (API), non verrà attivato alcun evento di "cambiamento: grafico".


Eventi della campagna

pronto

Questo evento si attiva dopo che tutti i dati attuali della campagna sono stati caricati. Quindi, se vuole trovare un elenco di tutti gli oggetti in una campagna, o un oggetto specifico che è già presente nella campagna, si assicuri di cercarlo solo dopo l'attivazione dell'evento ready. Inoltre, se si lega agli eventiadd(comeadd:graphic) prima che si attivi l'eventoready, riceverà eventi add per oggetti già presenti nella campagna.

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

change:campaign:playerpageid

Viene attivato ogni volta che la pagina in cui si trovano i giocatori cambia.

modifica:campagna:ordine di rotazione

Viene sparato ogni volta che l'elenco dell'ordine dei turni della campagna cambia.

change:campaign:initiativepage

Viene attivato ogni volta che l'ordine di rotazione viene nascosto o mostrato per una pagina. Questo potrebbe non coincidere con l'ID della pagina attualmente attiva. Se questo è impostato su false (incluso se uno script Mod (API) lo imposta su falso), chiuderà l'ordine di turno per tutti i GM / giocatori. Impostando un ID di pagina valido, lo aprirà per tutti i GM/giocatori.


Eventi dell'oggetto

modifica:grafica

Si attiva ogni volta che un oggetto grafico (che è praticamente qualsiasi tipo di oggetto sul tavolo da gioco, compresi i gettoni, le mappe e le carte) cambia.

Nota: gli oggetti grafici creati dall'API attivano questo evento al momento della creazione.

Parametri della richiamata: obj, prev

on("change:graphic", function(obj, prev) {    
  //Fare qualcosa con "obj" qui. "prev" è un elenco di valori precedenti.
  // Si noti che "obj" e "prev" sono diversi TIPI di oggetti. 
  // per lavorare con obj è necessario utilizzare obj.get("name");
  // per lavorare con prev è possibile utilizzare prev["name"];
});

modifica:grafico:(proprietà)

Può anche legarsi a un evento per ogni proprietà specifica dell'oggetto. Quindi, se ha uno script che vuole eseguire solo quando cambia la rotazione di, dovrebbe farlo:

on("change:graphic:rotation", function(obj, prev) {    
  //imposta sempre la rotazione a 0, in modo che nessuno possa ruotare gli oggetti.    
  obj.set("rotazione", 0);
});

aggiungere:grafica

Si attiva ogni volta che un oggetto grafico viene aggiunto per la prima volta al piano della tavola. Verrà chiamato anche per gli oggetti esistenti all'avvio del piano del tavolo se si lega a questo eventoal di fuoridell'eventoready.

Parametri di callback: obj

on("add:graphic", function(obj) {
  //Viene richiamato per tutti i nuovi elementi grafici, compresi quelli già esistenti all'inizio della sessione di gioco.
});

var started = false;

on("ready", function() {
  on("add:graphic", function(obj) {
    //Verrà chiamato solo per i nuovi oggetti che vengono aggiunti, dato che gli oggetti esistenti sono già stati caricati prima che si attivi l'evento ready.
  });
  //Potrebbe anche impostare una variabile e ignorare gli eventi di aggiunta finché non è vera.
  started = true;
});

distruggere:grafica

Si attiva quando un oggetto grafico viene rimosso dal piano del tavolo.

Parametri di callback: obj

Altri tipi di oggetti

Ci sono anche eventi per tutti gli altri tipi di oggetti e sottotipi, come ad esempio:

cambiare:percorso, aggiungere:percorso, distruggere:percorso, cambiare:testo, aggiungere:testo, distruggere:testo, cambiare:token, aggiungere:token, distruggere:token, cambiare:scheda, aggiungere:scheda, distruggere:scheda

Per un elenco completo di tutti i tipi di oggetti e sottotipi, consultiil riferimento agli oggetti.

Questo articolo ti è stato utile?
Utenti che ritengono sia utile: 11 su 14