O Construct 2 oferece alguns recursos avançados na folha de evento. Estes recursos permitem que usuários experientes aproveitem ao máximo o sistema de eventos, permitindo uma lógica mais sofisticada do que normalmente é possível com eventos padrão. Este tutorial resume as características de eventos que são destinados para uso avançado ou trabalham de forma diferente para eventos normais, com algumas dicas e truques.
Este tutorial é destinado a usuários experientes. Não deixe de ler [Como funcionam Eventos] se você não leu, pois o tutorial mostra os princípios básicos.
Condições especiais
O objeto do sistema tem três condições que funcionam de forma diferente às condições normais. Para obter mais informações, consulte as condições do sistema no manual.
Gatilho quando While for verdadeiro
Esta condição torna efetivamente um evento verdadeiro quando disparado. Ele testa: "Se não chegar a esta condição do último disparo". Normalmente é colocado como o último estado de um evento, porque se for colocado na primeira condição, será encontrado imediatamente e, portanto, nunca ira satisfazer o teste.
Um dos gatilhos é útil para produzir sons. Considere o seguinte evento:
Este é um erro comum - lembre-se que o evento é executado a cada tick, que é cerca de 60 vezes por segundo na maioria dos computadores - e resulta em som tocado e repetido continuamente enquanto a variável saúde, do jogador, é igual a 0. Muitas vezes o resultado fica ruim. Em vez disso, queremos que o som toque uma única vez quando o contador saúde for igual a 0. Adicionando gatilho uma vez (Trigger once) dessa maneira:
Agora, o som só vai tocar uma única vez quando a saúde atingir 0. Ele não vai tocar novamente até saúde mudar para outra coisa ou voltar para 0, quando irá tocar o som novamente.
Um truque útil é colocar o "Trigger once" sozinho em um grupo de eventos:
Se o grupo está sendo desabilitado e habilitado durante o jogo, isto ira iniciar o evento somente quando o grupo estiver habilitado. Ele atua como uma espécie de disparo "grupo habilitado".
Escolha tudo
Conforme descrito na Como eventos funcionam , eventos normalmente trabalham filtrando instâncias que não cumpram as condições. Um subconjunto de instâncias são feitos para que satisfaçam todas as condições, então as ações são executadas sobre essas instâncias.
Escolha tudo é a única condição que funciona em sentido inverso: ele restaura todos os objetos, assim condições subseqüentes escolhe todas as instâncias novamente. É difícil chegar a um exemplo simples e intuitiva sobre isso, mas pode ser útil para usuários avançados que têm de lidar com sub-eventos profundamente aninhados onde é conveniente para redefinir os objetos escolhidos.
Else
O evento Else é executado se o evento anterior não foi executado. Ele não pode ser colocado depois de um gatilho, e deve ser a primeira condição do evento. Se o Else não estiver no lugar certo, ele aparecerá em vermelho, indicando que você deve movê-lo, como na imagem abaixo. Você não pode visualizar ou exportar seu projeto se a condição Else estiver no lugar errado, uma vez que a lógica não faz sentido.
Um Else é útil é quando quisermos alternar uma variável. Muitas vezes, os novos usuários fazem o seguinte erro para alternar uma variável, neste caso, ao pressionar a tecla de espaço:
Observe que 1 é definido se (if) myFlag é 0, mas em seguida o próximo evento,
imediatamente, define de volta a 0 novamente, porque myFlag é igual a 1! (Este é o lugar onde a ordem dos eventos é importante: se lembrar de que eventos são executados de cima para baixo.) Este evento não têm o efeito pretendido e myFlag permanece 0, não importa quantas vezes a tecla Espaço for pressionada.
Uma solução é definir myFlag para 1. No entanto, isso só funciona para números, e nem sempre é muito legível. Else pode resolver o problema:
Agora pressionando Space alterna corretamente myFlag entre 0 e 1, porque o Else só funciona se o evento anterior não for verdadeiro.
Pressione X no teclado para adicionar um evento Else após o evento principal
Note que Else não inicia nenhum objeto. Ele literalmente diz: "Somente se o evento principal não ocorrer". Considere o seguinte exemplo:
A intenção é fazer os monstros, na tela, girar em direção ao jogador, e fazer o ponto de descanso a 90 graus. Há dois problemas com isso. Em primeiro lugar, o evento Else não será executado em todos. Se nenhum monstro esta na tela, então, o primeiro evento foi executado, ou seja é verdadeiro. Fazendo com que o Else não seja executado. Em segundo lugar, mesmo que o Else for executado, ele não vai escolher especificamente os monstros que estão fora da tela. O evento afeta todos os monstros, porque não escolhe instâncias. Neste caso, é melhor simplesmente substituir o Else com a condição Is on-screen invertido na tela , conforme mostrado abaixo. Isto terá o efeito pretendido em instâncias, dentro e fora da tela.
Else também pode ser encadeado com blocos "Else-if" para adicionar condições extras para o evento Else. E logo em seguida, adicionando um outro evento Else no final. Isto é mostrado abaixo.
Este pode ser lido:
Se(if) ItemCount for 0, escreva: "Você não tem itens".
Else if ItemCount for 1, escreva: "Você tem um item".
Else, escreva: "Você tem um monte de itens!".
Isso imita correntes else-if em linguagens de programação.
Laços While
Outra condição, interessante, do sistema é o loop While (Enquanto) . Os outros loops (repetir, para, para-cada) são relativamente simples. Mas enquanto funcionar de forma ligeiramente diferente, merecem ser mencionados.
While executa uma função, infinitamente, até:
- A condição seguinte torna-se falsa, ou
- O laço Stop loop system é usado.
Mais comumente ele será usado com uma condição que se segue, assim:
Isto irá manter o jogador em movimento 1 pixel até que o personagem já não se sobreponha o 'chão'. Isso acontece instantaneamente, por isso vai repetir quantas vezes precisar até que 'Is overlapping Ground' torne-se falsa.
Tenha cuidado para não criar, acidentalmente, loops infinitos. Se a condição nunca se tornar falso durante o loop, ou o 'While' é usado sozinho, sem uma ação 'Stop loop', o sistema irá travar em um loop infinito.
Blocos 'AND'(E) vs Blocos 'Or'(OU)
Eventos normais utilizam a lógica "And" (E): todas as condições devem ser atendidas pelas ações a serem executadas. Em outras palavras: "condição 1 AND(E) condição 2 AND(E) Condição 3..." deve ser verdadeiro. Por outro lado, blocos 'Or' ocorre para qualquer condição verdadeira. Em outras palavras, eles correm if(se) "condição 1 "OR"(OU) condição 2 "OR"(OU) condição 3..." for verdadeira. Considere o seguinte exemplo:
A intenção aqui é parar qualquer monstro que esta a esquerda de X = 500 ou acima de Y = 500. Neste caso, se todas as instâncias atende qualquer condição, o evento é executado. Os casos escolhidos para o evento serão aqueles correspondentes a qualquer condição .
Note como são comuns as ondições "And"(e), subsequentemente filtram instâncias mesmo não cumprindo totalmente os eventos - progressivamente, reduzindo o número de instâncias escolhidas. Em contraste, blocos "Or" adicionam instâncias que cumprem o evento - progressivamente aumentando o número de instâncias escolhidas.
Por padrão blocos de eventos são "And"(E). Eles podem ser alternado para blocos »Or« apertando o botão direito do mouse na margem de evento e selecionar Make 'Or' block , ou pressionando Y no teclado .
Normalmente, apenas um gatilho pode ser colocado em um evento. No entanto, isto não se aplica aos blocos 'ou'. Vários gatilhos podem ser adicionados a um evento 'Or', e as ações serão executadas quando qualquer um dos gatilhos no evento for acionado. Por exemplo, a seguir mostra um evento que reproduz um som se as teclas de A, B ou C no teclado são pressionadas:
Note que desde que blocos('And') normais não podem conter vários gatilhos, este evento não pode ser ligado de volta para um bloco 'And' até que todos, exceto um dos gatilhos, sejam excluídos.
Usando sub-events, você pode combinar blocos 'Or' com blocos 'And' para criar lógicas mais avançadas. Por exemplo:
Isso irá tocar um som ao pressionar A, B ou C, desde que Control ou a tecla Shift também estejam pressionadas. Ou seja: "Se (A 'Or' B 'Or' C for pressionado) 'And' (Control for pressionado 'Or' Shift for pressionado) então: reproduza o som".
Se o segundo evento não fosse um bloco 'Or', ele iria ler "Control pressionado 'And' Shift pressionado". Portanto, o som só iria tocar se você segurasse Control + Shift e pressionasse A, B ou C. Por outro lado: "Se (A 'Or' B 'Or' C forem pressionados) 'And' (Control estiver pressionado 'And' Shift estiver pressionado ): toque o som". Então, usar sub-events pode ajudá-lo a fazer lógicas condicionais mais avançadas.
Outras características avançadas úteis
Identificações exclusivas (UIDs) e identificações de instância (IIDs)
UIDs e IIDs são muitas vezes úteis para usuários avançados que utilizam instancias avançadas.
Um UID pode ser usado como uma "referência" para um objeto. A UID pode ser armazenado em uma variável e o objeto, mais tarde, pega com a instancia Pick by Unique ID .
IIDs pode ser usado para recuperar as expressões de instâncias específicas. Por exemplo, Sprite (1) .X ira retornar a coordenada da segunda Sprite X (Construct 2 usa expressões baseado em índices que iniciam com Zero). Para mais informações consulte Expressões no manual. IIDs também pode ser usado para escolher instâncias usando o Pick Nth instance system condition , mas cuidado que um IID não é uma referência a um objeto permanente: para que uma UID deve ser usado em vez disso.
Para obter mais informações, consulte UIDs e IIDs no manual.
Mais Avançado de tudo ...
Se você tem experiência de programação anterior ou apenas quer levá-la ao próximo nível, você pode usar o Javascript SDK para escrever seus próprios plugins e comportamentos para Construct 2. A página de visão geral tem uma lista de links para ajudá-lo a aprender Javascript.