Estou construindo um jogo HTML5 e estou tentando colocar o cursor do mouse sobre um determinado controle em um evento específico, para que mover em uma direção específica sempre tenha o mesmo resultado. Isso é possível?
Estou construindo um jogo HTML5 e estou tentando colocar o cursor do mouse sobre um determinado controle em um evento específico, para que mover em uma direção específica sempre tenha o mesmo resultado. Isso é possível?
Respostas:
Então, eu sei que esse é um tópico antigo, mas primeiro direi que não é possível. O mais próximo atualmente é travar o mouse em uma única posição e acompanhar as alterações nos seus x e y. Este conceito foi adotado pelo - parece - Chrome e Firefox. Ele é gerenciado pelo chamado Mouse Lock , e pressionar Escape irá quebrá-lo. Pela minha breve leitura, acho que a idéia é que ele bloqueie o mouse em um local e relate eventos de movimento semelhantes aos eventos de clicar e arrastar.
Aqui está a documentação da versão:
FireFox: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Chrome: http://www.chromium.org/developers/design-documents/mouse-lock
E aqui está uma demonstração bastante interessante: http://media.tojicode.com/q3bsp/
Você não pode mover o ponteiro do mouse com javascript.
Basta pensar nas implicações por um segundo, se você puder;)
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, existem centenas de desculpas por que, e como - não pode e não deve - 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 colocar o cursor do mouse em uma determinada área da tela se não usasse o cursor do mouse real (do sistema).
Por exemplo, você pode criar uma imagem para atuar no lugar do seu cursor, manipular um evento que, ao detectar o mouse entrar em sua cena, definir o estilo no cursor do sistema como 'none' (sceneElement.style.cursor = 'none'
), exibir um elemento de imagem oculto como um cursor para estar em qualquer lugar da cena, com base em uma tradução predefinida de eixos / caixas delimitadoras.
Dessa forma, não importa como você moveu o cursor real, seu método de tradução manterá o cursor da imagem onde você precisar.
editar: um exemplo no jsFiddle usando uma representação de imagem e movimento forçado do mouse
Ótima pergunta. Isso realmente está faltando na API do navegador Javascript. Também estou trabalhando em um jogo WebGL com minha equipe e precisamos desse recurso. Abri um problema no bugzilla do Firefox para que pudéssemos 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 por aí.
Se você quiser, venha e deixe um comentário com seu feedback e atualize o problema:
https://bugzilla.mozilla.org/show_bug.cgi?id=630979
Obrigado!
Você pode detectar a posição do ponteiro do mouse e mover a página da Web (com a posição do corpo relativa) 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 navegador (e atualizar posteriormente)
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'
});
});
document.getElementByID('thingtoclick').click();
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/en-US/docs/Web/API/Pointer_Lock_API
Você não pode mover o ponteiro do mouse usando javascript e, portanto, por razões óbvias de segurança. A melhor maneira de obter esse efeito seria realmente 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 mouse sprite / cena com base nessa compensação?
Por exemplo, você precisa que o ponteiro do mouse esteja no centro da parte inferior, mas fica no canto superior esquerdo; ocultar o cursor, use uma imagem deslocada do cursor. Mude o movimento do cursor e mapeie a entrada do mouse para corresponder aos cliques reposicionados do sprite do cursor (ou 'controle') Quando / se os limites forem atingidos, recalcule. Se / quando o cursor atingir o ponto desejado, remova a compensação.
Isenção de responsabilidade, não um desenvolvedor de jogos.