Sto costruendo un gioco HTML5 e sto cercando di posizionare il cursore del mouse su un certo controllo su un evento specifico in modo che lo spostamento in una direzione specifica abbia sempre lo stesso risultato. È possibile?
Sto costruendo un gioco HTML5 e sto cercando di posizionare il cursore del mouse su un certo controllo su un evento specifico in modo che lo spostamento in una direzione specifica abbia sempre lo stesso risultato. È possibile?
Risposte:
Quindi, so che questo è un vecchio argomento, ma prima dirò che non è possibile. La cosa più vicina al momento è bloccare il mouse in una singola posizione e tenere traccia delle modifiche nelle sue xey. Questo concetto è stato adottato da - sembra - Chrome e Firefox. È gestito da quello che si chiama Blocco mouse e colpire la fuga lo romperà. Dalla mia breve lettura, penso che l'idea sia di bloccare il mouse in una posizione e di segnalare eventi di movimento simili agli eventi di trascinamento della selezione.
Ecco la documentazione di rilascio:
FireFox: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Chrome: http://www.chromium.org/developers/design-documents/mouse-lock
Ed ecco una dimostrazione abbastanza accurata: http://media.tojicode.com/q3bsp/
Non è possibile spostare il mousepointer con javascript.
Basti pensare alle implicazioni per un secondo, se potessi;)
Eseguilo come uno script CGI tramite una semplice chiamata http, AJAX, qualunque cosa - con le coordinate in cui vuoi spostare il mouse, ad es .:
http://localhost:9876/cgi/mousemover?x=200&y=450
PS: Per qualsiasi problema, ci sono centinaia di scuse sul perché e come - non può e non dovrebbe essere fatto .. Ma in questo universo infinito, è davvero solo una questione di determinazione - sul fatto che TU lo farà accadere.
Immagino che potresti riuscire a posizionare il cursore del mouse su una determinata area dello schermo se non utilizzassi il cursore del mouse reale (di sistema).
Ad esempio, potresti creare un'immagine per agire al posto del cursore, gestire un evento che, rilevando il mouseenter nella scena, imposta lo stile sul cursore di sistema su "none" (sceneElement.style.cursor = 'none'
), quindi visualizzerebbe un elemento immagine nascosto che agisce come cursore per trovarti ovunque nella scena in base a una traduzione predefinita di assi / rettangoli.
In questo modo, indipendentemente dal modo in cui hai spostato il cursore reale, il metodo di traduzione manterrà il cursore dell'immagine ovunque ne avessi bisogno.
modifica: un esempio in jsFiddle usando una rappresentazione dell'immagine e un movimento forzato del mouse
Ottima domanda Questo è davvero qualcosa che manca dall'API del browser Javascript. Sto anche lavorando a un gioco WebGL con il mio team e abbiamo bisogno di questa funzione. Ho aperto un problema sul bugzilla di Firefox in modo che possiamo iniziare a parlare della possibilità di avere un'API per consentire il blocco del mouse. Questo sarà utile per tutti gli sviluppatori di giochi HTML5 / WebGL là fuori.
Se ti piace, vieni qui e lascia un commento con il tuo feedback, e risolvi il problema:
https://bugzilla.mozilla.org/show_bug.cgi?id=630979
Grazie!
È possibile rilevare la posizione del puntatore del mouse e quindi spostare la pagina Web (con la posizione del corpo relativa) in modo che passi sopra ciò su cui si desidera fare clic.
Ad esempio, puoi incollare questo codice sulla pagina corrente nella tua console del browser (e aggiornare successivamente)
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();
Non puoi muovere un mouse ma puoi bloccarlo. Nota: è necessario chiamare requestPointerLock nell'evento clic.
Piccolo esempio:
var canvas = document.getElementById('mycanvas');
canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock;
canvas.requestPointerLock();
Documentazione ed esempio di codice completo:
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Non è possibile spostare il puntatore del mouse utilizzando JavaScript, quindi per ovvi motivi di sicurezza. Il modo migliore per ottenere questo effetto sarebbe effettivamente posizionare il controllo sotto il puntatore del mouse.
Non è possibile farlo semplicemente ottenendo la posizione effettiva del puntatore del mouse, quindi calcolando e compensando le azioni del mouse sprite / scene basate su questa compensazione?
Ad esempio, è necessario che il puntatore del mouse sia in basso al centro, ma si trova in alto a sinistra; nascondi il cursore, usa un'immagine del cursore spostata. Spostare il movimento del cursore e mappare l'input del mouse in modo che corrisponda ai clic di sprite (o "controllo") riposizionati del cursore Quando / se vengono colpiti i limiti, ricalcolare. Se / quando il cursore raggiunge effettivamente il punto desiderato, rimuovere la compensazione.
Disclaimer, non uno sviluppatore di giochi.
Interessante. Questo non è direttamente possibile per i motivi chiamati in precedenza (clic di spam e iniezione di malware), ma considera questo hack, che crea un'impressione dello stesso:
Diciamo che hai un div, puoi usare questa proprietà css per nascondere il cursore reale:
.your_div {
cursor: none
}
Basta creare un'immagine, un cursore simile e posizionarla all'interno della tua pagina web, con position = 'absolute'.
Questo è facile. Controlla Internet su come ottenere la posizione reale del mouse (coordinate X e Y).
Mentre il cursore reale si sposta, sposta il tuo pseudo cursore con la stessa differenza X e Y. Allo stesso modo, puoi sempre generare un evento clic in qualsiasi posizione sulla tua pagina web con javascript magic (basta cercare in Internet su come fare).
A questo punto, puoi controllare il cursore pesudo nel modo desiderato e il tuo utente avrà l'impressione che il cursore reale si stia muovendo.
====
Avviso equo: non farlo. Nessuno vuole che il proprio cursore o computer sia controllato in questo modo, a meno che non si abbia un caso d'uso specifico o se si è determinati a fuggire via dagli utenti.