API: Eventos

Existem vários tipos diferentes de eventos aos quais você pode responder. Em geral, cada tipo de objeto tem um evento correspondente para alterações, adições e remoções. Cada evento será acionado uma vez por objeto que sofrer alterações. Se mais de uma propriedade no objeto for alterada ao mesmo tempo, apenas um evento "global" (por exemplo, change:graphic) será acionado.


Parâmetros de retorno de chamada

Quando você ouve um evento, você cria uma função conhecida como umretorno de chamadaque é executada sempre que o evento ocorre. A função de retorno de chamada recebe vários parâmetros que são objetos que fornecem informações que você deseja saber sobre o evento, para que você possa decidir o que fazer.

Os parâmetros de retorno de chamada para cada evento variam, mas incluem:

obj

O objeto que foi alterado. Quaisquer alterações que você fizer neste objeto também serão salvas no jogo. Portanto, se você quiser mover um objeto Gráfico para a esquerda, você deve modificar a propriedade left do objusando set.

  • obj.get("property")retorna o valor atual da propriedade.
  • obj.set("property", "novovalor")define um novo valor para a propriedade. Se você estiver alterando várias propriedades ao mesmo tempo, você pode passar um objeto:obj.set({left: 10, top: 20});


prev

Este é um objeto das propriedades doobjcomo eram antes de qualquer alteração devido a este evento. Útil para determinar "quanto" uma propriedade mudou.

NOTA:Este é um objeto básico, então você acessa as propriedades usando a notação de colchetes:prev["bar1_value"], NÃO usando as funções set ou get.


Ordenação de Eventos

Os eventos são disparados de forma síncrona (ou seja, cada função não começará até que a anterior tenha terminado) em ordem do primeiro vinculado ao último vinculado e também de uma propriedade específica para um objeto geral. Então, dado o seguinte:

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

Se os objetosleft forem alterados, a ordem será function3, depois function1, depois function2.

Além disso, se você tiver vários scripts em sua campanha, os scripts serão carregados na mesma ordem em que aparecem na página de Scripts da Campanha, da esquerda para a direita.

Nota:Os eventos só são acionados por alterações feitas pelos jogadores/o Mestre que está jogando o jogo. Os eventos não serão acionados por alterações na API. Portanto, se um jogador mover uma peça no tabuleiro, você receberá um evento "change:graphic". Se você modificar a propriedade da mesma imagem em um script de API, não será acionado um evento "change:graphic".


Eventos da Campanha

pronto

Este evento é acionado após todos os dados atuais da campanha terem sido carregados. Portanto, se você quiser encontrar uma lista de todos os objetos em uma campanha, ou um objeto específico que já está na Campanha, certifique-se de procurá-lo apenas depois que o evento ready for disparado. Além disso, se se ligar a eventosadd(comoadd:graphic) antes de o eventoreadydisparar, receberá eventos add para objectos que já estavam presentes na campanha.

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

change:campaign:playerpageid

Disparado sempre que a página em que os jogadores estão atualmente muda.

change:campaign:turnorder

Disparado sempre que a ordem de turno para a campanha muda.

change:campaign:initiativepage

Disparado sempre que a ordem de turno é ocultada ou exibida para uma página. Isso pode não ser o mesmo que o ID da página atualmente ativa. Se isso for definido comofalso(incluindo se um script de API definir como falso), ele fechará a ordem de turno para todos os Mestres/players. Definir como um ID de página válido abrirá para todos os Mestres/players.


Eventos do Objeto

change:graphic

Acionado sempre que um objeto Gráfico (que é quase qualquer tipo de objeto no jogo de tabuleiro, incluindo fichas, mapas e cartas) é alterado.

Observação: Objetos Gráficos criados pela API acionarão esse evento ao serem criados.

Parâmetros de retorno: obj, prev

on("change:graphic", function(obj, prev) {    
  //Faça algo com "obj" aqui. "prev" é uma lista de valores anteriores.
  // Observe que "obj" e "prev" são diferentes TIPOS de objetos. 
  // para trabalhar com obj, você precisa usar obj.get("name");
  // para trabalhar com prev, você pode usar prev["name"];
});

change:graphic:(property)

Você também pode se ligar a um evento para cada propriedade específica do objeto. Então, se você tem um script que você quer executar apenas quando a rotaçãomuda, você faria:

on("change:graphic:rotation", function(obj, prev) {    
  //Sempre defina a rotação de volta para 0, para que ninguém possa girar objetos.    
  obj.set("rotation", 0);
});

add:graphic

Disparado sempre que um objeto gráfico é adicionado à mesa de jogo pela primeira vez. Também será chamado para objetos existentes quando a mesa de jogo iniciar se você se ligar a este eventoforado eventoready.

Parâmetros de retorno: obj

on("add:graphic", function(obj) {
  //Será chamado para todos os novos gráficos, incluindo aqueles que já existiam no início da sessão de jogo.
});

var começou = false;

em("pronto", function() {
  em("adicionar:gráfico", function(obj) {
    //Será chamado apenas para novos objetos que forem adicionados, pois objetos existentes já foram carregados antes do evento pronto ser acionado.
  });
  //Você também pode definir uma variável e ignorar eventos de adição até que ela seja verdadeira.
  começou = true;
});

destruir:gráfico

Acionado sempre que um objeto gráfico for removido do tabuleiro.

Parâmetros de retorno: obj

Outros Tipos de Objetos

Também existem eventos para todos os outros tipos de objetos e subtipos, como:

mudança:caminho, adicionar:caminho, destruir:caminho, mudança:texto, adicionar:texto, destruir:texto, mudança:token, adicionar:token, destruir:token, mudança:carta, adicionar:carta, destruir:carta

Veja a referência de Objetos para uma lista completa de todos os tipos e subtipos de objetos.

Este artigo foi útil?
Utilizadores que acharam útil: 11 de 14