वेब ऐप्लिकेशन, अब पॉइंटर इवेंट कैप्चर करते समय, माउस की रफ़्तार बढ़ाने की सुविधा को बंद कर सकते हैं.
स्क्रीन पर पॉइंटर को एक जगह से दूसरी जगह ले जाने के लिए, माउस या ट्रैकपैड का इस्तेमाल करते समय, मूवमेंट की एक आसान सुविधा मिलती है. यह धीरे-धीरे मूव करके सटीक मूवमेंट दिखाता है. साथ ही, पॉइंटर एक छोटे से मोशन में पूरी स्क्रीन को पार कर सकता है. खास तौर पर, जब आप माउस को हिलाते हैं, तो उसी दूरी के लिए स्क्रीन पर मौजूद पॉइंटर तब आगे बढ़ता है, जब दूरी ज़्यादा तेज़ी से तय की जाती है.
ऑपरेटिंग सिस्टम, डिफ़ॉल्ट रूप से माउस की रफ़्तार बढ़ाने की सुविधा चालू करते हैं. फ़र्स्ट-पर्सन शूटर वाले कुछ गेम में, आम तौर पर फ़र्स्ट-पर्सन शूटर (एफ़पीएस) वाले गेम में, माउस का रॉ इनपुट डेटा इस्तेमाल किया जाता है. इसका इस्तेमाल, तेज़ी से अडजस्ट किए गए बिना कैमरा रोटेशन को कंट्रोल करने के लिए किया जाता है. एक ही वास्तविक गति, धीमी या तेज़, दोनों का एक ही घुमाव होता है. इससे, पेशेवर गेमर के हिसाब से गेमिंग का बेहतर अनुभव और ज़्यादा सटीक वीडियो मिलते हैं.
Chrome 88 से, वेब ऐप्लिकेशन के लिए यह सुविधा इस्तेमाल की जा सकती है: अपडेट किए गए पॉइंटर लॉक एपीआई की मदद से, वेब ऐप्लिकेशन के लिए यह सुविधा चालू की जा सकती है.
Google Stadia और Nvidia GeForce Now जैसे वेब-आधारित गेमिंग प्लैटफ़ॉर्म, पहले से ही एफ़पीएस गेमर को खुश करने के लिए, इन नई सुविधाओं का इस्तेमाल कर रहे हैं.
एपीआई का इस्तेमाल करना
पॉइंटर लॉक का अनुरोध करें
जब कोई डेस्कटॉप ऐप्लिकेशन, पॉइंटर आइकॉन को छिपा देता है और माउस की गति को किसी दूसरे काम के लिए समझाता है, जैसे कि 3D दुनिया में आस-पास देखना, तो पॉइंटर लॉक एक कैननिकल शब्द है.
mousemove
दस्तावेज़ इवेंट के movementX
और movementY
एट्रिब्यूट से पता चलता है कि पिछली बार ले जाने वाले इवेंट के बाद से, माउस पॉइंटर कितनी बार मूव हुआ. हालांकि,
जब पॉइंटर वेब पेज से बाहर चला जाता है, तब उन्हें अपडेट नहीं किया जाता.
document.addEventListener("mousemove", (event) => {
console.log(`movementX: ${event.movementX} movementY: ${event.movementY}`);
});
माउस पॉइंटर को कैप्चर करने (या पॉइंटर लॉक का अनुरोध करने) से, आपको पॉइंटर के बाहर जाने की चिंता करने की ज़रूरत नहीं होती. यह खास तौर पर इमर्सिव वेब गेम के लिए उपयोगी है. पॉइंटर के लॉक होने पर, माउस के सभी इवेंट, पॉइंटर लॉक के टारगेट एलिमेंट पर चले जाते हैं.
पॉइंटर लॉक का अनुरोध करने के लिए, टारगेट एलिमेंट पर requestPointerLock()
को कॉल करें. साथ ही, पॉइंटर लॉक में हुए बदलावों को मॉनिटर करने के लिए, pointerlockchange
और pointerlockerror
इवेंट सुनें.
const myTargetElement = document.body;
// Call this function to request a pointer lock.
function requestPointerLock() {
myTargetElement.requestPointerLock();
}
document.addEventListener("pointerlockchange", () => {
if (document.pointerLockElement) {
console.log(`pointer is locked on ${document.pointerLockElement}`);
} else {
console.log("pointer is unlocked");
}
});
document.addEventListener("pointerlockerror", () => {
console.log("pointer lock error");
});
माउस की रफ़्तार बढ़ाने की सुविधा बंद करें
माउस की रफ़्तार बढ़ाने के लिए, ओएस-लेवल पर बदलाव करने की सुविधा बंद करने और माउस का रॉ इनपुट ऐक्सेस करने के लिए, requestPointerLock()
को { unadjustedMovement: true }
से कॉल करें.
इस तरह, पॉइंटर के लॉक होने पर, mousemove
इवेंट से माउस की गतिविधि के डेटा में माउस की गतिविधि शामिल नहीं होगी.
requestPointerLock()
से लौटाए गए नए प्रॉमिस का इस्तेमाल करें और देखें कि अनुरोध पूरा हुआ या नहीं.
function requestPointerLockWithUnadjustedMovement() {
const promise = myTargetElement.requestPointerLock({
unadjustedMovement: true,
});
if (!promise) {
console.log("disabling mouse acceleration is not supported");
return;
}
return promise
.then(() => console.log("pointer is locked"))
.catch((error) => {
if (error.name === "NotSupportedError") {
// Some platforms may not support unadjusted movement.
// You can request again a regular pointer lock.
return myTargetElement.requestPointerLock();
}
});
}
पॉइंटर लॉक को रिलीज़ किए बिना, माउस की गतिविधि से जुड़े एक्सेलरेटेड और नॉन- करते समय डेटा के बीच टॉगल किया जा सकता है. बस मनचाहे विकल्प के साथ पॉइंटर लॉक का अनुरोध करें. अगर वह अनुरोध पूरा नहीं होता, तो मूल लॉक जारी रहेगा और वापस किया गया प्रॉमिस अस्वीकार कर दिया जाएगा. फ़ेल हो चुके बदलाव के अनुरोध के लिए, कोई भी पॉइंटर लॉक इवेंट फ़ायर नहीं होगा.
ब्राउज़र समर्थन
पॉइंटर लॉक एपीआई सभी ब्राउज़र पर अच्छी तरह से काम करता है. हालांकि, अक्टूबर 2020 से सिर्फ़ Chromium पर आधारित ब्राउज़र (जैसे, Chrome, Edge वगैरह) ने माउस की रफ़्तार के लिए, ओएस-लेवल पर बदलाव करने की सुविधा को बंद करने की सुविधा नहीं दी है. अपडेट के लिए MDN की ब्राउज़र के साथ काम करने की क्षमता टेबल देखें.
ऑपरेटिंग सिस्टम सपोर्ट
माउस की रफ़्तार बढ़ाने के लिए, ओएस-लेवल पर बदलाव करने की सुविधा बंद की जा सकती है. यह सुविधा ChromeOS, macOS Catalina 10.15.1, और Windows पर मिलती है. Linux बाद में.
नमूना
Glitch पर सैंपल चलाकर, पॉइंटर लॉक एपीआई का इस्तेमाल किया जा सकता है. सोर्स कोड की जांच करना न भूलें.
मददगार लिंक
- पूरी जानकारी
- स्पेसिफ़िकेशन पीआर
- GitHub रिपॉज़िटरी
- ChromeStatus एंट्री
- Chrome को ट्रैक करने में गड़बड़ी
- शिप करने का इरादा
- Mozilla की स्थिति
- WebKit की स्थिति
स्वीकार हैं
इस लेख के बारे में समीक्षाएं करने के लिए, जेम्स हॉलियर, थॉमस स्टाइनर, जो मेडली, केस बास्क, और विंसेंट शीब का धन्यवाद.