ฉันกำลังสร้างเกม HTML5 และฉันพยายามวางเคอร์เซอร์ของเมาส์ไว้เหนือการควบคุมบางอย่างในเหตุการณ์หนึ่ง ๆ เพื่อให้การเคลื่อนที่ไปในทิศทางที่เฉพาะเจาะจงจะได้ผลลัพธ์เดียวกันเสมอ เป็นไปได้หรือไม่
ฉันกำลังสร้างเกม HTML5 และฉันพยายามวางเคอร์เซอร์ของเมาส์ไว้เหนือการควบคุมบางอย่างในเหตุการณ์หนึ่ง ๆ เพื่อให้การเคลื่อนที่ไปในทิศทางที่เฉพาะเจาะจงจะได้ผลลัพธ์เดียวกันเสมอ เป็นไปได้หรือไม่
คำตอบ:
ฉันรู้ว่านี่เป็นหัวข้อเก่า แต่ก่อนอื่นฉันจะบอกว่ามันเป็นไปไม่ได้ สิ่งที่ใกล้เคียงที่สุดในขณะนี้คือการล็อคเมาส์ไว้ที่ตำแหน่งเดียวและติดตามการเปลี่ยนแปลงของ x และ y แนวคิดนี้ถูกนำมาใช้โดย - ดูเหมือนว่า - Chrome และ Firefox มันถูกจัดการโดยสิ่งที่เรียกว่าMouse Lockและการกดปุ่ม Escape จะทำให้มันพัง จากการอ่านข้อมูลสั้น ๆของฉันฉันคิดว่าแนวคิดคือมันล็อกเมาส์ไว้ที่ตำแหน่งเดียวและรายงานเหตุการณ์การเคลื่อนไหวที่คล้ายกับเหตุการณ์คลิกแล้วลาก
นี่คือเอกสารเผยแพร่:
FireFox: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Chrome: http://www.chromium.org/developers/design-documents/mouse-lock
และนี่คือการสาธิตที่ค่อนข้างเรียบร้อย: http://media.tojicode.com/q3bsp/
คุณไม่สามารถเลื่อนตัวชี้เมาส์ด้วยจาวาสคริปต์
ลองคิดถึงความหมายสักครู่ถ้าคุณทำได้;)
เรียกใช้เป็นสคริปต์ CGI ผ่านการเรียก http แบบธรรมดา AJAX อะไรก็ได้ - ด้วยพิกัดที่คุณต้องการเลื่อนเมาส์ไปเช่น:
http://localhost:9876/cgi/mousemover?x=200&y=450
PS: สำหรับปัญหาใด ๆ มีข้อแก้ตัวหลายร้อยข้อว่าทำไมและอย่างไร - ทำไม่ได้และไม่ควรทำ .. แต่ในจักรวาลที่ไม่มีที่สิ้นสุดนี้มันเป็นเรื่องของความมุ่งมั่นจริงๆ - ว่าคุณ จะทำให้มันเกิดขึ้น
ฉันคิดว่าคุณสามารถวางเคอร์เซอร์ของเมาส์ไปยังพื้นที่ที่กำหนดของหน้าจอได้หากคุณไม่ได้ใช้เคอร์เซอร์ของเมาส์ (ระบบ) จริง
ตัวอย่างเช่นคุณสามารถสร้างภาพเพื่อทำหน้าที่แทนเคอร์เซอร์ของคุณจัดการเหตุการณ์ที่เมื่อตรวจพบการวางเมาส์เข้าไปในฉากของคุณตั้งค่ารูปแบบบนเคอร์เซอร์ของระบบเป็น 'ไม่มี' ( sceneElement.style.cursor = 'none'
) จากนั้นจะแสดงองค์ประกอบภาพที่ซ่อนอยู่ เป็นเคอร์เซอร์ได้ทุกที่ที่คุณต้องการในฉากตามการแปลแกน / กรอบขอบเขตที่กำหนดไว้ล่วงหน้า
วิธีนี้ไม่ว่าคุณจะย้ายเคอร์เซอร์จริงอย่างไรวิธีการแปลของคุณจะเก็บเคอร์เซอร์รูปภาพของคุณไว้ทุกที่ที่คุณต้องการ
แก้ไข: ตัวอย่างใน jsFiddle โดยใช้การแสดงภาพและการบังคับเมาส์
คำถามที่ดี นี่คือสิ่งที่ขาดหายไปจาก Javascript browser API ฉันกำลังทำงานกับเกม WebGL ร่วมกับทีมของฉันและเราต้องการคุณสมบัตินี้ ฉันเปิดปัญหาเกี่ยวกับ bugzilla ของ Firefox เพื่อที่เราจะได้เริ่มพูดคุยเกี่ยวกับความเป็นไปได้ที่จะมี API เพื่ออนุญาตให้ล็อคเมาส์ สิ่งนี้จะเป็นประโยชน์สำหรับนักพัฒนาเกม HTML5 / WebGL ทั้งหมดที่นั่น
หากคุณต้องการมาแสดงความคิดเห็นพร้อมกับข้อเสนอแนะของคุณและโหวตให้ปัญหา:
https://bugzilla.mozilla.org/show_bug.cgi?id=630979
ขอบคุณ!
คุณสามารถตรวจจับตำแหน่งของตัวชี้เมาส์จากนั้นเลื่อนหน้าเว็บ (โดยมีตำแหน่งของร่างกายสัมพันธ์กัน) เพื่อให้พวกเขาวางเมาส์เหนือสิ่งที่คุณต้องการให้คลิก
ตัวอย่างเช่นคุณสามารถวางโค้ดนี้บนหน้าปัจจุบันในคอนโซลเบราว์เซอร์ของคุณ (และรีเฟรชในภายหลัง)
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();
คุณไม่สามารถเลื่อนเมาส์ได้ แต่สามารถล็อกได้ หมายเหตุ: คุณต้องเรียก requestPointerLock ในเหตุการณ์คลิก
ตัวอย่างเล็ก ๆ :
var canvas = document.getElementById('mycanvas');
canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock;
canvas.requestPointerLock();
ตัวอย่างเอกสารและโค้ดฉบับเต็ม:
https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
คุณไม่สามารถเลื่อนตัวชี้เมาส์โดยใช้จาวาสคริปต์ได้และด้วยเหตุผลด้านความปลอดภัยที่ชัดเจน วิธีที่ดีที่สุดในการบรรลุเอฟเฟกต์นี้คือวางตัวควบคุมไว้ใต้ตัวชี้เมาส์
สิ่งนี้ไม่สามารถทำได้โดยการรับตำแหน่งจริงของตัวชี้เมาส์จากนั้นคำนวณและชดเชยการกระทำของเมาส์สไปรท์ / ฉากตามค่าตอบแทนนี้หรือไม่?
ตัวอย่างเช่นคุณต้องให้ตัวชี้เมาส์อยู่ตรงกลางด้านล่าง แต่อยู่ด้านซ้ายบน ซ่อนเคอร์เซอร์ใช้ภาพเคอร์เซอร์ที่เลื่อน เลื่อนการเคลื่อนที่ของเคอร์เซอร์และอินพุตของเมาส์แผนที่เพื่อให้ตรงกับการคลิกสไปรท์เคอร์เซอร์ที่วางตำแหน่งใหม่ (หรือ 'ควบคุม') คลิกเมื่อ / ถ้ามีการชนขอบเขตให้คำนวณใหม่ ถ้า / เมื่อเคอร์เซอร์ไปถึงจุดที่คุณต้องการให้เป็นจริงให้ลบการชดเชยออก
ข้อจำกัดความรับผิดชอบไม่ใช่ผู้พัฒนาเกม
น่าสนใจ สิ่งนี้ไม่สามารถทำได้โดยตรงจากเหตุผลที่เรียกก่อนหน้านี้ (การคลิกสแปมและการแทรกมัลแวร์) แต่ให้พิจารณาการแฮ็กนี้ซึ่งสร้างความประทับใจในลักษณะเดียวกัน:
สมมติว่าคุณเป็น div คุณสามารถใช้คุณสมบัติ css นี้เพื่อซ่อนเคอร์เซอร์จริง:
.your_div {
cursor: none
}
เพียงสร้างรูปภาพเคอร์เซอร์ที่มีลักษณะเหมือนกันและวางไว้ในหน้าเว็บของคุณโดยมี position = 'absolute'
นี่เป็นเรื่องง่าย ตรวจสอบอินเทอร์เน็ตเกี่ยวกับวิธีรับตำแหน่งเมาส์จริง (พิกัด X & Y)
ขณะที่เคอร์เซอร์เคลื่อนที่จริงให้เลื่อนเคอร์เซอร์หลอกของคุณตามความแตกต่าง X & Y ในทำนองเดียวกันคุณสามารถสร้างเหตุการณ์การคลิกที่ตำแหน่งใดก็ได้บนหน้าเว็บของคุณด้วย javascript magic (เพียงแค่ค้นหาอินเทอร์เน็ตตามวิธีการ)
ณ จุดนี้คุณสามารถควบคุมเคอร์เซอร์หลอกได้ตามที่คุณต้องการและผู้ใช้ของคุณจะได้รับความรู้สึกว่าเคอร์เซอร์จริงกำลังเคลื่อนที่
====
คำเตือนที่เป็นธรรม:อย่าทำ ไม่มีใครต้องการให้เคอร์เซอร์หรือคอมพิวเตอร์ควบคุมด้วยวิธีนี้เว้นแต่คุณจะใช้กรณีเฉพาะหรือตั้งใจที่จะหนีผู้ใช้ของคุณไป