我有一个mousedown
事件监听器,它运行以下函数:
function getPos(event) {
var x = event.x;
var y = event.y;
x -= canvas.offsetLeft;
y = canvas.offsetTop;
for(var checker of board.checkers) {
if(x >= checker.x + 32 && x <= checker.x - 32) {
if(y >= checker.y + 32 && y <= checker.y -32) {
alert("HE CLICKED");
}
}
}
}
由于棋子是圈子,它们的起源位于中心,这就是我检查checker.x + 32或checker.x-32的原因。
由于某种原因,alert("He clicked")
没有出现。当我弄乱不平等符号时,我会得到alert("he clicked")
,但是在错误的情况下。
有人可以对这个问题有所了解吗?
答案 0 :(得分:0)
仔细研究你的条件:
if(x >= checker.x + 32 && x <= checker.x - 32) {
if(y >= checker.y + 32 && y <= checker.y -32) {
alert("HE CLICKED");
}
}
您正在使用&&
暗示两个条件必须同时为真 - 这是不可能的,因为您正在检查在检查器边界之外点击 。
相反,您应该在检查器的边界内查找点击。
像这样:
if(x <= checker.x + 32 && x >= checker.x - 32) {
if(y <= checker.y + 32 && y >= checker.y -32) {
alert("HE CLICKED");
}
}