मैं एक HTML5 गेम बना रहा हूं और मैं माउस कर्सर को एक विशिष्ट घटना पर एक निश्चित नियंत्रण पर रखने की कोशिश कर रहा हूं ताकि एक विशिष्ट दिशा में आगे बढ़ने का हमेशा एक ही परिणाम हो। क्या यह संभव है?
मैं एक HTML5 गेम बना रहा हूं और मैं माउस कर्सर को एक विशिष्ट घटना पर एक निश्चित नियंत्रण पर रखने की कोशिश कर रहा हूं ताकि एक विशिष्ट दिशा में आगे बढ़ने का हमेशा एक ही परिणाम हो। क्या यह संभव है?
जवाबों:
इसलिए, मुझे पता है कि यह एक पुराना विषय है, लेकिन मैं पहले कहूंगा कि यह संभव नहीं है। निकटतम चीज वर्तमान में माउस को एकल स्थिति में लॉक कर रही है, और इसके x और y में परिवर्तन को ट्रैक कर रही है। इस अवधारणा को इसके द्वारा अपनाया गया है - ऐसा लगता है - क्रोम और फ़ायरफ़ॉक्स। यह क्या माउस लॉक कहा जाता है द्वारा प्रबंधित किया जाता है , और मार से बच इसे तोड़ देगा। मेरे संक्षिप्त रीड-अप से, मुझे लगता है कि यह विचार यह है कि यह माउस को एक स्थान पर लॉक करता है, और क्लिक-एंड-ड्रैग इवेंट के समान गति की घटनाओं की रिपोर्ट करता है।
यहाँ रिलीज़ प्रलेखन है:
FireFox: https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API
Chrome: http://www.chromium.org/developers/design-docuy/mouse-lock
और यहाँ एक बहुत अच्छा प्रदर्शन है: http://media.tojicode.com/q3bsp/
आप जावास्क्रिप्ट के साथ माउसपॉइंट को स्थानांतरित नहीं कर सकते।
बस एक पल के लिए निहितार्थ के बारे में सोचें, यदि आप कर सकते हैं;)
एक साधारण http कॉल, AJAX, जो भी - निर्देशांक के साथ आप माउस को ले जाना चाहते हैं जैसे उदाहरण के लिए CGI- स्क्रिप्ट के रूप में इसे चलाएं:
http://localhost:9876/cgi/mousemover?x=200&y=450
पुनश्च: किसी भी समस्या के लिए, के रूप में सैकड़ों बहाने हैं क्यों, और कैसे - यह नहीं हो सकता है, और नहीं किया जाना चाहिए .. लेकिन इस अनंत ब्रह्मांड में, यह वास्तव में दृढ़ संकल्प की बात है - चाहे आप यह हो जाएगा।
यदि आप वास्तविक (सिस्टम) माउस कर्सर का उपयोग नहीं करते हैं तो मैं आपको माउस कर्सर को स्क्रीन के किसी दिए गए क्षेत्र में रखने की कल्पना कर सकता हूं।
उदाहरण के लिए, आप अपने कर्सर के स्थान पर कार्य करने के लिए एक छवि बना सकते हैं, एक घटना को संभाल सकते हैं जो आपके दृश्य में माउसएंटर का पता लगाने पर, सिस्टम कर्सर पर शैली को 'कोई नहीं' पर सेट करें (sceneElement.style.cursor = 'none'
) में सेट करें, फिर एक छिपा हुआ छवि तत्व अभिनय लाएगा। एक पूर्वनिर्धारित अक्ष / बाउंडिंग बॉक्स अनुवाद के आधार पर दृश्य में एक कर्सर के रूप में आप कहीं भी हों।
इस तरह से कोई फर्क नहीं पड़ता कि आपने वास्तविक कर्सर को कैसे स्थानांतरित किया है आपकी अनुवाद विधि आपके छवि कर्सर को जहाँ भी आपको आवश्यकता होगी, रखेगी।
संपादित करें: छवि प्रतिनिधित्व और मजबूर माउस आंदोलन का उपयोग करते हुए jsFiddle में एक उदाहरण
बड़ा सवाल है। यह वास्तव में जावास्क्रिप्ट ब्राउज़र एपीआई से कुछ गायब है। मैं अपनी टीम के साथ एक WebGL गेम पर भी काम कर रहा हूं, और हमें इस सुविधा की आवश्यकता है। मैंने फ़ायरफ़ॉक्स के बगज़िला पर एक मुद्दा खोला ताकि हम माउस लॉक करने की अनुमति देने के लिए एपीआई होने की संभावना के बारे में बात करना शुरू कर सकें। यह सभी 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
आप जावास्क्रिप्ट का उपयोग करके माउस पॉइंटर को स्थानांतरित नहीं कर सकते, और इस प्रकार स्पष्ट सुरक्षा कारणों से। इस प्रभाव को प्राप्त करने का सबसे अच्छा तरीका वास्तव में माउस पॉइंटर के तहत नियंत्रण रखना होगा।
क्या यह केवल माउस पॉइंटर की वास्तविक स्थिति प्राप्त करने के बाद नहीं किया जा सकता है और इस मुआवजे के आधार पर स्प्राइट / सीन माउस क्रियाओं की गणना और क्षतिपूर्ति करना है?
उदाहरण के लिए आपको माउस पॉइंटर को बॉटम सेंटर होने की जरूरत है, लेकिन यह ऊपर बाईं ओर बैठता है; कर्सर को छिपाएं, एक स्थानांतरित कर्सर छवि का उपयोग करें। कर्सर चाल और मानचित्र माउस इनपुट को फिर से तैनात कर्सर स्प्राइट (या 'नियंत्रण') से मेल खाने के लिए क्लिक करें, जब सीमाएं हिट होती हैं, तो पुनरावर्ती करें। यदि / जब कर्सर वास्तव में उस बिंदु को हिट करता है जिसे आप चाहते हैं, तो मुआवजा हटा दें।
डिस्क्लेमर, गेम डेवलपर नहीं।