我有一个数组,它在我的游戏中充满了许多不同对象的位置,我想要实现的是当鼠标位于画布中的对象上时,用户可以单击然后一个框(将是一个菜单)会出现。
这是我已经拥有的代码:
this.init_inv = function(value){
canvas.onmousemove = function (e) {
var x, y;
for(var i = 0;i < value.length; i++){
// Get the mouse position relative to the canvas element.
if (e.layerX || e.layerX) { //for firefox
x = e.layerX;
y = e.layerY;
}
x-=canvas.offsetLeft;
y-=canvas.offsetTop;
if(x>=value[i][0] && x <= (value[i][0] + value[i][2]) &&
y<=value[i][1]&& y >= (value[i][1]-value[i][2])){
document.body.style.cursor = "pointer";
inObject=true;
}
else{
document.body.style.cursor = "";
inObject=false;
}
}
};
canvas.addEventListener("click", on_click, false);
};
点击处理程序如下所示:
function on_click(e) {
if (inLink) {
var dataString = {"save": "true", "level":level, "location_X":pos_X, "location_Y":pos_Y};
$.ajax({
type:"POST",
url:"PHP/class.ajax.php",
data: dataString,
dataType: "JSON",
success: function(success){
alert("Saved");
},
error:function(){
alert("Not Saved");
}
});
}
if(inObject){
console.log("hovering");
}
}
我有一个单独的点击处理程序,因为我需要处理不同画布不同部分的点击。
我相信问题在于我如何读取数组中的值,但不确定如何读取。我知道这一点,因为如果我在value[i][0]
etc 值所在的位置输入一个 int,我可以在指定的区域单击,然后单击触发,我会得到控制台日志。
数组如下所示:
var array = [
[pos_x,pox_y, size]
//etc...
];