الحصول على تحسس الماوس باستخدام jQuery
-
02-10-2019 - |
سؤال
أقوم ببناء لعبة خارقة باستخدام jQuery و <canvas>
عنصر. للتحكم في المجداف ، سوف يتبع الماوس. لذلك أنا بحاجة إلى الحصول على تحسس الماوس في بلدي drawPaddle()
طريقة.
بالنظر إلى موقع jQuery ، يحتوي على أمثلة مثل هذا:
$(document).mousemove(function(e){
$('#status').html(e.pageX +', '+ e.pageY);
});
وهو ما أريده ، لكنني لا أريد إضافة وظيفة أخرى إلى مشروعي مثل هذا. هذا هو بلدي drawPaddle()
طريقة:
function drawPaddle() {
c.beginPath();
c.rect(paddleX, paddleY, 150, 10);
c.closePath();
c.fill();
// Get mouse position and update paddleX and paddleY here
}
لذلك أحتاج إلى إيجاد طريقة للحصول على موضع الماوس كلما drawPaddle()
يتم استدعاؤه ، وليس كلما تم نقل الماوس على الصفحة مثل $(document).mousemove(function(e){
يفعل.
نقدر اي مساعدة، شكرا.
المحلول
$('canvas').mousemove(function(e){
drawPaddle(e.pageX, e.pageY);
});
function drawPaddle(paddleX, paddleY) {
c.beginPath();
c.rect(paddleX, paddleY, 150, 10);
c.closePath();
c.fill();
}
نصائح أخرى
سوف تحتاج إلى القيام به
var where = {}
$('canvas').mousemove(function(e){
where.x = e.pageX
where.y = e.pageY;
});
ثم استخدم Wherex ، y في الوظيفة
أعتقد أنه لا توجد طريقة للقيام بذلك بدون حدث. لا أعرف أي حقل في JavaScript يخزن تلك المعلومات على مستوى العالم. منذ بعض الوقت واجهت نفس المشكلة وفعلت ذلك مع mousemove
الحدث لأنني لم أجد أي حل آخر. ربما يقوم بعض المتصفح بتنفيذ طريقة للحصول على هذه الإحداثيات ولكني لا أعرف.
ولكن ربما يمكنك استخدام mouseenter
و mouseleave
الأحداث على قماشك لتمكين/تعطيل موقف الماوس. من شأنه أن يقلل من مكالمات الوظائف.