Oneshot Gems
Jogar agora

Para desenvolvedores de jogos

Trate o cancelamento como um caminho de entrada completo

Uma interação com o ponteiro nem sempre termina com pointerup. O navegador pode cancelá-la quando um toque passa a rolar ou ampliar a página, ou quando o dispositivo ou navegador não consegue mais enviar eventos daquele ponteiro. Se a máquina de estados do jogo não tratar o cancelamento, um objeto arrastado pode ficar preso ou uma ação mantida pode nunca parar.

Nesta página

Torne a limpeza idempotente

Quando pointerdown inicia um arrasto, armazene o pointerId ativo e o objeto ou ação que ele possui. Tanto pointerup quanto pointercancel devem encerrar essa interação e limpar seu estado. Escreva a função de limpeza de modo que chamá-la após uma ação já finalizada seja inofensivo; isso simplifica o tratamento de perdas de captura, alterações de janelas e limpezas defensivas repetidas.

Se estiver usando a captura de ponteiro, ouça lostpointercapture como outro sinal de que a interação não possui mais o ponteiro. Não interprete o cancelamento como um posicionamento concluído com sucesso, a menos que o jogo defina explicitamente esse resultado. Um arrasto cancelado pode retornar um objeto à sua posição inicial, manter a última posição válida ou cancelar o movimento; escolha uma regra e comunique-a por meio de um sinal visual.

Teste o controle de gestos do navegador

Experimente arrastar que começa na superfície do jogo e continua em direção à borda da tela, uma rolagem vertical da página que começa sobre a superfície, rotação durante um toque prolongado e um segundo dedo tocando em outro lugar. Confirme que nenhum personagem continua se movendo e nenhum botão permanece pressionado visualmente após o cancelamento.

A propriedade touch-action influencia quais gestos o navegador manipula. MDN explica que os navegadores podem despachar pointercancel ao assumir o controle panorâmico ou zoom. Trate o cancelamento como um resultado normal que seu modelo de interação deve suportar.

Perguntas sobre ⁨cancelamento de ponteiro em jogos⁩

O pointercancel é um ponteiro com falha?

É um sinal separado de que o ponteiro não continuará mais a interação atual. Execute a limpeza e aplique a regra de cancelamento do jogo em vez de assumir que a ação foi concluída.

A ação por toque pode impedir o todo cancelamento de ponteiro?

Não. Ele orienta o manuseio de gestos de toque pelo navegador, mas outras condições ainda podem encerrar a entrega do ponteiro. Mantenha o tratamento do cancelamento mesmo quando a superfície do jogo tiver regras de gestos personalizadas.

Leitura complementar

Viu alguma informação desatualizada? Informar uma correção

Continue jogando.

Jogos grátis no navegador, prontos quando você quiser. Encontre um de que goste e faça dele seu próximo favorito.

Siga sua curiosidade