我在所选函数内创建了事件监听器,但无法在“win”函数中将其删除。 (choose函数是在setInterval中实现的,但只有在调用clearInterval之后才实现) 我怎样才能删除这个事件监听器?我不希望点击后文本可以更改。
function chose() {
canvas.onmousemove = function (event) {
if (((ballPos == 1) & (event.clientX > posX1) & (event.clientX < posX1 + cupw) & (event.clientY > posY) & (event.clientY < posY + cuph)) |
((ballPos == 2) & (event.clientX > posX2) & (event.clientX < posX2 + cupw) & (event.clientY > posY) & (event.clientY < posY + cuph)) |
((ballPos == 3) & (event.clientX > posX3) & (event.clientX < posX3 + cupw) & (event.clientY > posY) & (event.clientY < posY + cuph)))
win = true;
else
win = false;
canvas.addEventListener('click', function () {
winpage(win);
}, false);
}
}
function winpage(win) {
canvas.removeEventListener('click', function () {
winpage(win);
}, false);
context.clearRect(0, 0, w, h);
context.drawImage(backGround, 0, 0, w, h);
if (win)
context.fillText("YOU WIN!!!", w / 2, h / 2);
else
context.fillText("YOU LOSE!!!", w / 2, h / 2);
}
最佳答案
它必须是完全相同的函数。
var handler = function () {
winpage(win);
};
function chose() {
canvas.onmousemove = function (event) {
if (((ballPos == 1) & (event.clientX > posX1) & (event.clientX < posX1 + cupw) & (event.clientY > posY) & (event.clientY < posY + cuph)) |
((ballPos == 2) & (event.clientX > posX2) & (event.clientX < posX2 + cupw) & (event.clientY > posY) & (event.clientY < posY + cuph)) |
((ballPos == 3) & (event.clientX > posX3) & (event.clientX < posX3 + cupw) & (event.clientY > posY) & (event.clientY < posY + cuph)))
win = true;
else
win = false;
canvas.addEventListener('click', handler, false);
}
}
function winpage(win) {
canvas.removeEventListener('click', handler, false);
context.clearRect(0, 0, w, h);
context.drawImage(backGround, 0, 0, w, h);
if (win)
context.fillText("YOU WIN!!!", w / 2, h / 2);
else
context.fillText("YOU LOSE!!!", w / 2, h / 2);
}
关于javascript - 无法删除事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20678689/