0

所以我希望游戏能够实时检查要点击的画布区域。所以我猜我需要一个每 .1 秒调用一次的函数?这是我到目前为止想出的

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();

}

还是一种更加资源友好的方式是基于单击它检查区域(按钮)是否已被单击?

这更好吗?

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();
 }  
 }
4

1 回答 1

0

这是在发生鼠标事件时让浏览器通知您的方法

首先,一些设置。记录画布在浏览器窗口上的坐标。我们需要这个,因为浏览器会报告鼠标相对于整个窗口的位置,我们需要相对于画布的坐标。

    var canvasOffset=$("#canvas").offset();
    var offsetX=canvasOffset.left;
    var offsetY=canvasOffset.top;

然后你可以请求 jQuery 在 mousedown 事件发生时通知你:

    $("#canvas").mousedown(function(e){handleMouseDown(e);});

最后,当 jQuery 实际检测到鼠标按下时,jQuery 将调用您的“鼠标按下处理函数”。这是我们计算鼠标位置的地方,也是您放置鼠标按下时要执行的任何代码的地方。

    function handleMouseDown(e){
      mouseX=parseInt(e.clientX-offsetX);
      mouseY=parseInt(e.clientY-offsetY);
      $("#downlog").html("Down: "+ mouseX + " / " + mouseY);

      // Put your mousedown stuff here

    }

这是代码和小提琴:http: //jsfiddle.net/m1erickson/taxuM/

<!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>
于 2013-06-02T02:23:08.077 回答