Saya sedang membangun permainan HTML5 dan saya mencoba untuk meletakkan kursor mouse di atas kontrol tertentu pada peristiwa tertentu sehingga bergerak ke arah tertentu selalu memiliki hasil yang sama. Apakah ini mungkin?
Saya sedang membangun permainan HTML5 dan saya mencoba untuk meletakkan kursor mouse di atas kontrol tertentu pada peristiwa tertentu sehingga bergerak ke arah tertentu selalu memiliki hasil yang sama. Apakah ini mungkin?
Jawaban:
Jadi, saya tahu ini adalah topik lama, tapi pertama-tama saya katakan itu tidak mungkin. Hal terdekat saat ini adalah mengunci mouse ke satu posisi, dan melacak perubahan dalam x dan y. Konsep ini telah diadopsi oleh - sepertinya - Chrome dan Firefox. Ini dikelola oleh apa yang disebut Mouse Lock , dan memukul melarikan diri akan merusaknya. Dari pembacaan singkat saya , saya pikir idenya adalah bahwa itu mengunci mouse ke satu lokasi, dan melaporkan acara gerak yang mirip dengan acara klik dan seret.
Berikut dokumentasi rilisnya:
FireFox: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Chrome: http://www.chromium.org/developers/design-documents/mouse-lock
Dan inilah demonstrasi yang cukup rapi: http://media.tojicode.com/q3bsp/
Anda tidak dapat memindahkan mousepointer dengan javascript.
Pikirkan implikasinya sebentar, jika Anda bisa;)
Jalankan sebagai skrip CGI melalui panggilan http sederhana, AJAX, apa pun - dengan koordinat yang ingin Anda pindahkan mouse, misalnya:
http://localhost:9876/cgi/mousemover?x=200&y=450
PS: Untuk masalah apa pun, ada ratusan alasan mengapa, dan bagaimana - itu tidak bisa, dan tidak boleh - dilakukan .. Tapi di alam semesta yang tak terbatas ini, itu benar-benar hanya masalah tekad - apakah ANDA akan mewujudkannya.
Saya akan membayangkan Anda bisa mencapai menempatkan kursor mouse ke area layar tertentu jika Anda tidak menggunakan kursor mouse (sistem) nyata.
Misalnya, Anda dapat membuat gambar untuk bertindak di tempat kursor Anda, menangani peristiwa yang ketika mendeteksi mouseenter ke dalam adegan Anda, mengatur gaya pada kursor sistem ke 'tidak ada' ( sceneElement.style.cursor = 'none'
), kemudian akan memunculkan akting elemen gambar tersembunyi yang bertindak sebagai kursor ke mana pun Anda suka dengan adegan berdasarkan pada terjemahan kotak sumbu / pembatas yang telah ditentukan.
Dengan cara ini, tidak peduli bagaimana Anda memindahkan kursor nyata, metode terjemahan Anda akan menjaga kursor gambar Anda di mana pun Anda membutuhkannya.
sunting: contoh di jsFiddle menggunakan representasi gambar dan gerakan mouse secara paksa
Pertanyaan yang bagus Ini benar-benar sesuatu yang hilang dari API browser Javascript. Saya juga sedang mengerjakan game WebGL dengan tim saya, dan kami membutuhkan fitur ini. Saya membuka masalah pada bugzilla Firefox sehingga kita dapat mulai berbicara tentang kemungkinan memiliki API untuk memungkinkan penguncian mouse. Ini akan berguna untuk semua pengembang game HTML5 / WebGL di luar sana.
Jika Anda suka, datang dan tinggalkan komentar dengan umpan balik Anda, dan angkat masalah:
https://bugzilla.mozilla.org/show_bug.cgi?id=630979
Terima kasih!
Anda dapat mendeteksi posisi penunjuk mouse dan kemudian memindahkan halaman web (dengan posisi tubuh relatif) sehingga mereka mengarahkan kursor pada apa yang Anda ingin mereka klik.
Sebagai contoh, Anda dapat menempelkan kode ini pada halaman saat ini di konsol browser Anda (dan menyegarkan setelahnya)
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();
Anda tidak bisa menggerakkan mouse tetapi bisa menguncinya. Catatan: bahwa Anda harus memanggil requestPointerLock di acara klik.
Contoh kecil:
var canvas = document.getElementById('mycanvas');
canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock;
canvas.requestPointerLock();
Dokumentasi dan contoh kode lengkap:
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Anda tidak dapat memindahkan pointer mouse menggunakan javascript, dan karenanya untuk alasan keamanan yang jelas. Cara terbaik untuk mencapai efek ini adalah dengan menempatkan kontrol di bawah penunjuk tetikus.
Tidak bisakah ini hanya dilakukan dengan mendapatkan posisi aktual dari pointer mouse kemudian menghitung dan mengkompensasi tindakan mouse sprite / scene berdasarkan kompensasi ini?
Misalnya Anda memerlukan penunjuk tetikus untuk berada di tengah bawah, tetapi kursor itu berada di kiri atas; sembunyikan kursor, gunakan gambar kursor bergeser. Menggeser gerakan kursor dan memetakan input tetikus untuk mencocokkan sprite kursor yang diposisikan kembali (atau 'kontrol') klik Ketika / jika batas-batas dipukul, hitung ulang. Jika / ketika kursor benar-benar mencapai titik yang Anda inginkan, hapus kompensasi.
Penafian, bukan pengembang game.
Menarik. Ini tidak mungkin secara langsung karena alasan yang disebutkan sebelumnya (klik spam dan injeksi malware), tetapi pertimbangkan peretasan ini, yang menciptakan kesan yang sama:
Katakanlah Anda memiliki div, Anda dapat menggunakan properti css ini untuk menyembunyikan kursor asli:
.your_div {
cursor: none
}
Cukup buat gambar, mirip kursor, dan letakkan di halaman web Anda, dengan position = 'absolute'.
Ini mudah. Periksa internet tentang cara mendapatkan lokasi mouse nyata (koordinat X & Y).
Saat kursor aktual bergerak, gerakkan kursor semu Anda dengan perbedaan X & Y yang sama. Demikian pula, Anda selalu dapat menghasilkan acara klik di lokasi mana pun di halaman web Anda dengan sihir javascript (cukup cari di internet tentang caranya).
Sekarang pada titik ini, Anda dapat mengontrol kursor pesudo seperti yang Anda inginkan, dan pengguna Anda akan mendapat kesan bahwa kursor nyata bergerak.
====
Peringatan Adil: Jangan lakukan itu. Tidak seorang pun ingin kursor atau komputer mereka dikendalikan dengan cara ini, kecuali jika Anda memiliki beberapa kasus penggunaan tertentu, atau jika Anda bertekad untuk melarikan diri dari pengguna Anda.