2010-09-11 180 views
1

我正在使用jQuery和<canvas>元素构建一个突破游戏。要控制桨,它将遵循鼠标。所以我需要在我的drawPaddle()方法中获得鼠标坐标。使用jQuery获取鼠标坐标

找上了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){ 一样。

任何帮助表示赞赏,谢谢。

回答

1
$('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

这正是我想避免TBH。我只想从我的'drawPaddle'功能中抓取鼠标坐标。但似乎没有其他办法。 – Will 2010-09-11 19:16:20

+0

什么是你要用来触发'drawPaddle()'的事件,或者你打算什么时候调用'drawPaddle()'? – 2010-09-11 19:19:23

0

我认为没有事件没有办法做到这一点。我不知道全球存储该信息的JavaScript领域。前一段时间,我遇到了同样的问题,并通过mousemove事件做到了这一点,因为我找不到其他解决方案。也许某些浏览器实现了获取这些坐标的方式,但我不知道。

但是,也许您可​​以在画布上使用mouseentermouseleave事件来启用/禁用鼠标位置捕获。这将减少函数调用。

3

你需要做

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

,然后用其中x,y的功能