如何取消绑定onClick事件处理程序,直到需要它为止?

时间:2018-01-25 16:25:45

标签: javascript html5 html5-canvas

我在JavaScript游戏中遇到了问题。

我的游戏生活在画布中,我大量使用函数:

document.onmousemove = function(event) {

    var mouseX = event.clientX - canvas.getBoundingClientRect().left;
    var mouseY = event.clientY - canvas.getBoundingClientRect().top;

    //mouse position is relative to player position
    mouseX -= CANVAS_WIDTH/2;
    mouseY -= CANVAS_HEIGHT/2;

    player.aimAngle = Math.atan2(mouseY, mouseX) / Math.PI * 180;
}

document.onclick = function(event) {

 if(player.canAttack && player.distance >= 80) {        //not for sword attack
     performAttack(player);
     player.canAttack = false;
 }

 if(player.distance < 80)
     performAttack(player);


 event.preventDefault();
}

但在动态创建画布之前,我有一个登录表单。当我用鼠标点击选择那些我在控制台中获得的表格时出现错误Uncaught TypeError:无法读取属性&#39; canAttack&#39;未定义的。那是因为我还没有调用Player()构造函数,所以canAttack不存在,而且onMouseMove画布还没有存在。

我如何&#34;禁用&#34;或取消绑定document.onclick和document.onmousemove? 如果使用addEventListener完成它,我会使用removeEventListener禁用它们。我怎么能用document.onclick呢?

由于

1 个答案:

答案 0 :(得分:0)

必须删除侦听器

时请尝试以下操作
function noop(){}

document.onclick = noop // when have to remove click binding