سؤال

أقوم ببناء لعبة خارقة باستخدام 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 الأحداث على قماشك لتمكين/تعطيل موقف الماوس. من شأنه أن يقلل من مكالمات الوظائف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top