Получение координат мыши с помощью jQuery - PullRequest
1 голос
/ 11 сентября 2010

Я создаю прорывную игру, используя 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){ делает.

Любая помощь приветствуется, спасибо.

Ответы [ 3 ]

3 голосов
/ 11 сентября 2010

Вам нужно будет сделать

var where = {}
$('canvas').mousemove(function(e){
    where.x = e.pageX
    where.y = e.pageY;
});

и затем использовать wherex, y в функции

1 голос
/ 11 сентября 2010
$('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();
}
0 голосов
/ 11 сентября 2010

Я думаю, что нет способа сделать это без события. Я не знаю ни одного поля в JavaScript, которое хранит эту информацию во всем мире. Некоторое время назад у меня была такая же проблема, и я сделал это с событием mousemove, потому что не нашел другого решения. Может быть, какой-то браузер реализует способ получения этих координат, но я не знаю.

Но, возможно, вы можете использовать события mouseenter и mouseleave на холсте, чтобы включить / отключить захват позиции мыши. Это уменьшит количество вызовов функций.

...