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