Javascript 获取鼠标坐标画布,并使用间隔调用函数
因此,我希望游戏能够实时检查画布区域是否被点击。所以我猜我需要一个每.1秒调用一次的函数?这就是我到目前为止想到的Javascript 获取鼠标坐标画布,并使用间隔调用函数,javascript,jquery,canvas,Javascript,Jquery,Canvas,因此,我希望游戏能够实时检查画布区域是否被点击。所以我猜我需要一个每.1秒调用一次的函数?这就是我到目前为止想到的 function init() { setInterval('CheckMouseCoords', 60000); SetUpLevel1(); } function CheckMouseCoords() { var dot = getCursorPosition(e); if (dot.x < 100 & dot.x < 200) { if (
function init()
{
setInterval('CheckMouseCoords', 60000);
SetUpLevel1();
}
function CheckMouseCoords()
{
var dot = getCursorPosition(e);
if (dot.x < 100 & dot.x < 200)
{
if (dot.y < 100 && dot.y < 200)
{
HUDOn();
}
}
function HUDOn()
{
drawBackground();
drawBars();
drawPlayer();
drawEnemy();
drawHUD();
}
函数init()
{
设置间隔('CheckMouseCoords',60000);
SetUpLevel1();
}
函数CheckMouseCoords()
{
var点=getCursorPosition(e);
如果(点x<100和点x<200)
{
如果(点y<100和点y<200)
{
HUDOn();
}
}
函数HUDOn()
{
牵引杆接地();
牵引杆();
drawPlayer();
付款人();
drawHUD();
}
或者,一种更为资源友好的方法是基于单击它来检查区域(按钮)是否已被单击
这样更好吗
function CheckMouseCoords()
{
var mouseX = Math.floor((e.pageX-$("#canvas").offset().left) / 20);
var mouseY = Math.floor((e.pageY-$("#canvas").offset().top) / 20);
if (mouseX > 100 & mouseY < 500)
{
if ((mouseY+100) > 100 && (mouseY+100)< 500)
{
HUDOn();
}
}
函数CheckMouseCoords()
{
var mouseX=Math.floor((e.pageX-$(“#canvas”).offset().left)/20);
var mouseY=数学地板((e.pageY-$(“#canvas”).offset().top)/20);
如果(mouseX>100和mouseY<500)
{
如果((鼠标+100)>100&(鼠标+100)<500)
{
HUDOn();
}
}
以下是如何让浏览器在发生鼠标事件时通知您的方法
首先,一些设置。记录画布在浏览器窗口上的位置坐标。我们需要这样做,因为浏览器将报告鼠标相对于整个窗口的位置,我们需要画布的坐标
var canvasOffset=$("#canvas").offset();
var offsetX=canvasOffset.left;
var offsetY=canvasOffset.top;
然后,您可以请求jQuery在mousedown事件发生时通知您:
$("#canvas").mousedown(function(e){handleMouseDown(e);});
最后,当jQuery实际检测到mousedown时,jQuery将调用您的“mousedown处理函数”。这是我们计算鼠标位置的地方,您将在这里放置发生mousedown时要执行的任何代码
function handleMouseDown(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(e.clientY-offsetY);
$("#downlog").html("Down: "+ mouseX + " / " + mouseY);
// Put your mousedown stuff here
}
下面是代码和小提琴:
正文{背景色:象牙;}
画布{边框:1px纯红;}
$(函数(){
var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var canvasOffset=$(“#画布”).offset();
var offsetX=canvasOffset.left;
var offsetY=canvasOffset.top;
功能手柄向下(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(例如clientY-offsetY);
$(“#downlog”).html(“Down:“+mouseX+”/“+mouseY”);
//把你的鼠标下的东西放在这里
}
功能handleMouseUp(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(例如clientY-offsetY);
$(“#uplog”).html(“Up:“+mouseX+”/“+mouseY”);
//把你的鼠标放在这里
}
函数handleMouseOut(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(例如clientY-offsetY);
$(“#outlog”).html(“Out:+mouseX+”/“+mouseY”);
//把你的老鼠屎放在这里
}
功能手柄移动(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(例如clientY-offsetY);
$(“#movelog”).html(“移动:+mouseX+”/“+mouseY”);
//把你的mousemove放在这里
}
$(“#canvas”).mousedown(函数(e){handleMouseDown(e);});
$(“#canvas”).mousemove(函数(e){handleMouseMove(e);});
$(“#canvas”).mouseup(函数(e){handleMouseUp(e);});
$(“#canvas”).mouseout(函数(e){handleMouseOut(e);});
});//end$(函数(){});
向下
移动
向上
退出
Global code容易出错。请阅读模块模式。setInterval('CheckMouseCoords',60000);
-这不会调用函数。这将:setInterval(CheckMouseCoords,60000);
如果您希望在用户单击时检查区域,然后绑定onclick事件,则无需像这样检查鼠标坐标
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<style>
body{ background-color: ivory; }
canvas{border:1px solid red;}
</style>
<script>
$(function(){
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var canvasOffset=$("#canvas").offset();
var offsetX=canvasOffset.left;
var offsetY=canvasOffset.top;
function handleMouseDown(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(e.clientY-offsetY);
$("#downlog").html("Down: "+ mouseX + " / " + mouseY);
// Put your mousedown stuff here
}
function handleMouseUp(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(e.clientY-offsetY);
$("#uplog").html("Up: "+ mouseX + " / " + mouseY);
// Put your mouseup stuff here
}
function handleMouseOut(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(e.clientY-offsetY);
$("#outlog").html("Out: "+ mouseX + " / " + mouseY);
// Put your mouseOut stuff here
}
function handleMouseMove(e){
mouseX=parseInt(e.clientX-offsetX);
mouseY=parseInt(e.clientY-offsetY);
$("#movelog").html("Move: "+ mouseX + " / " + mouseY);
// Put your mousemove stuff here
}
$("#canvas").mousedown(function(e){handleMouseDown(e);});
$("#canvas").mousemove(function(e){handleMouseMove(e);});
$("#canvas").mouseup(function(e){handleMouseUp(e);});
$("#canvas").mouseout(function(e){handleMouseOut(e);});
}); // end $(function(){});
</script>
</head>
<body>
<p id="downlog">Down</p>
<p id="movelog">Move</p>
<p id="uplog">Up</p>
<p id="outlog">Out</p>
<canvas id="canvas" width=300 height=300></canvas>
</body>
</html>