Mova o ponteiro do mouse para uma posição específica?

Estou construindo um jogo em HTML5 e estou tentando colocar o cursor do mouse sobre um certo controle em um evento específico para que mover em uma direção específica sempre tenha o mesmo resultado. Isso é possível?

    Ótima pergunta. Isso é realmente algo que falta na API do navegador Javascript. Também estou trabalhando em um jogo WebGL com minha equipe e precisamos desse recurso. Eu abri um problema no bugzilla do Firefox para que possamos começar a falar sobre a possibilidade de ter uma API para permitir o bloqueio do mouse. Isso será útil para todos os desenvolvedores de jogos HTML5 / WebGL.

    Se quiser, venha e deixe um comentário com seus comentários e aumente o problema:

    https://bugzilla.mozilla.org/show_bug.cgi?id=630979

    Obrigado!

    Você não pode mover o mousepointer com javascript.

    Pense nas implicações por um segundo, se puder;)

    1. Usuário pensa: “hey eu gostaria de clicar neste link”
    2. Javascript move o mouse para outro link
    3. O usuário clica no link errado e, inadvertidamente, faz o download de um malware que formata seu drive C e come seus doces
    1. Execute um pequeno servidor da web na máquina cliente. Pode ser uma pequena coisa de 100kb. Um script em Python / Perl, etc.
    2. Inclua um executável C pequeno e pré-compilado que possa mover o mouse.
    3. Execute-o como um script CGI através de uma simples chamada http, AJAX, o que for – com as coordenadas para as quais você deseja mover o mouse, por exemplo:

      http://localhost:9876/cgi/mousemover?x=200&y=450

    PS: Para qualquer problema, há centenas de desculpas a respeito de por que, e como – não pode, e não deveria – ser feito. Mas neste universo infinito, é realmente apenas uma questão de determinação – se VOCÊ vai fazer isso acontecer.

    Eu imagino que você poderia realizar colocando o cursor do mouse para uma determinada área da canvas, se você não usou o cursor do mouse real (sistema).

    Por exemplo, você poderia criar uma imagem para agir no lugar do cursor, manipular um evento que, ao detectar o mouseenter na cena, definir o estilo no cursor do sistema como ‘none’ ( sceneElement.style.cursor = 'none' ), então, traria um elemento de imagem oculto atuando como um cursor para ser em qualquer lugar que você quiser na cena com base em uma tradução de checkbox de eixo / delimitação predefinida.

    Desta forma, não importa como você moveu o cursor real, seu método de tradução manteria o seu cursor de imagem onde quer que você precisasse.

    edit: um exemplo no jsFiddle usando uma representação de imagem e movimento forçado do mouse

    Você pode detectar a posição do ponteiro do mouse e, em seguida, mover a página da Web (com a posição relativa do corpo) para que eles passem o mouse sobre o que você deseja que eles cliquem.

    Por exemplo, você pode colar esse código na página atual no console do seu navegador (e atualizar depois)

     var upvote_position = $('#answer-12878316').position(); $('body').mousemove(function (event) { $(this).css({ position: 'relative', left: (event.pageX - upvote_position.left - 22) + 'px', top: (event.pageY - upvote_position.top - 35) + 'px' }); }); 

    Você não pode mover um mouse, mas pode bloqueá-lo. Nota: você deve chamar requestPointerLock no evento click.

    Exemplo pequeno:

     var canvas = document.getElementById('mycanvas'); canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock; canvas.requestPointerLock(); 

    Documentação e exemplo de código completo:

    https://developer.mozilla.org/pt-BR/docs/Web/API/Pointer_Lock_API

    Então, eu sei que este é um tópico antigo, mas primeiro digo que não é possível. A coisa mais próxima atualmente é travar o mouse em uma única posição e rastrear as alterações em xe y. Este conceito foi adotado por – parece – Chrome e Firefox. É gerenciado pelo que é chamado de Mouse Lock , e acertar o escape irá quebrá-lo. A partir do meu breve resumo , acho que a ideia é que ele bloqueie o mouse em um local e relata events de movimento semelhantes a events de clicar e arrastar.

    Aqui está a documentação do lançamento:
    FireFox: https://developer.mozilla.org/pt-BR/docs/Web/API/Pointer_Lock_API
    Chrome: http://www.chromium.org/developers/design-documents/mouse-lock

    E aqui está uma demonstração bem legal: http://media.tojicode.com/q3bsp/

    Você não pode mover o ponteiro do mouse usando javascript e, portanto, por motivos óbvios de segurança. A melhor maneira de obter esse efeito seria colocar o controle sob o ponteiro do mouse.

    Isso não poderia ser feito simplesmente obtendo a posição real do ponteiro do mouse e calculando e compensando as ações do sprite / cena com base nessa compensação?

    Por exemplo, você precisa que o ponteiro do mouse esteja no centro da parte inferior, mas fica na parte superior esquerda; esconder o cursor, use uma imagem de cursor deslocada. Desloque o movimento do cursor e mapeie a input do mouse para coincidir com os cliques do sprite re-posicionado (ou ‘controle’) Quando / se os limites forem atingidos, recalcule. Se / quando o cursor realmente atingir o ponto desejado, remova a compensação.

    Disclaimer, não um desenvolvedor de jogos.