Rastreie cada ponteiro ativo deliberadamente
Para um simples arrastar, armazene o pointerId de pointerdown e atualize apenas enquanto o ponteiro estiver ativo. A captura do ponteiro pode manter o movimento posterior e liberar eventos roteados para o elemento do jogo quando o ponteiro ultrapassa seus limites. Trate pointerup e pointercancel como finais separados e remova o estado em ambos os caminhos para que um gesto perdido não deixe o jogo travado.
Não presuma que há apenas um ponteiro, a menos que o design limite as entradas. Um segundo dedo, uma caneta ou um mouse pode gerar outro pointerId. Se o jogo permitir apenas um arrasto ativo, ignore os demais ponteiros de forma previsível, sem deixar que substituam o primeiro.
Escolha quando o tipo de dispositivo é importante
PointerEvent expõe pointerType para casos em que toque, caneta e mouse precisam de tratamento distinto. Por exemplo, uma mecânica de desenho pode usar a pressão da caneta, enquanto um botão de menu deve aceitar qualquer ponteiro primário. Evite ramificar o tipo de dispositivo apenas para recriar sistemas de eventos separados; adiciona caminhos para testar sem melhorar a interação do jogador.
Os navegadores podem emitir eventos de compatibilidade do mouse em torno da entrada do ponteiro, portanto, evite manipular uma ação duas vezes em ambos os sistemas. Teste um mouse, um contato de toque e uma caneta quando esses dispositivos estiverem no escopo. O MDN documenta a captura de ponteiros, identificadores de ponteiros e o relacionamento da família de eventos com eventos de mouse.
Perguntas sobre eventos de ponteiro para jogos
Os eventos de ponteiro tornam o mouse e o toque idênticos?
Eles compartilham um modelo de evento, mas as propriedades e as expectativas dos usuários ainda podem ser diferentes. Use pointerType ou outros detalhes de evento somente quando uma mecânica tiver uma necessidade concreta específica do dispositivo.
Quando um jogo deve usar captura de ponteiro?
Use a captura quando um arrasto ativo precisar continuar recebendo movimentos e o evento de liberação mesmo depois que o ponteiro sair da área interativa do elemento. Libere a captura durante a limpeza e trate também o cancelamento.
Leitura complementar
Viu alguma informação desatualizada? Informar uma correção