我在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呢?
由于
答案 0 :(得分:0)
必须删除侦听器
时请尝试以下操作function noop(){}
document.onclick = noop // when have to remove click binding