# Trate o cancelamento como um caminho de entrada completo

> Encerre ações de arrastar e segurar com segurança quando o navegador cancelar um ponteiro e evite controles travados após rolagem, rotação ou interrupções.

- URL: https://oneshotgems.ai/pt-BR/topics/pointer-cancellation-in-games
- Categoria: Para desenvolvedores de jogos
- Tipo: Guia
- Atualizado: 5 de outubro de 2026

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.

## 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

**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.

## Siga sua curiosidade

- [Use eventos de ponteiro para entrada de jogo do navegador](https://oneshotgems.ai/pt-BR/topics/pointer-events-for-games): Modele mouse, caneta e toque por meio de eventos de ponteiro, preservando a captura, a identidade do dispositivo e o comportamento de compatibilidade em um loop de jogo.
- [Projete controles por toque para jogos web](https://oneshotgems.ai/pt-BR/topics/touch-controls-for-web-games): Planeje a interação por toque considerando os gestos do navegador, o feedback visual e o estado do ponteiro para que o jogo responda de forma previsível nos celulares.

## Leitura complementar

- [MDN: evento pointercancel](https://developer.mozilla.org/en-US/docs/Web/API/Element/pointercancel_event)
- [MDN: ação de toque](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/touch-action)

---
Página canônica: https://oneshotgems.ai/pt-BR/topics/pointer-cancellation-in-games
