我正在用socket.io处理一个简单的Pong游戏,它将state.player设置为0,使用户在屏幕左侧显示桨,并且将state.player设置为1屏幕一侧。Cant Remove Event Listener
最终玩家将会切换位置,因此需要移除和重新添加让鼠标控制屏幕上的右侧/左侧桨的事件监听器,以便他们控制正确的桨侧屏幕。
我在某处读取必须将该函数存储在变量中,然后调用变量上的removeEventListener,但似乎没有工作。在添加一个事件侦听器之前,我删除了两个事件侦听器,以便鼠标只能控制屏幕正确的一侧。但是,当他们切换双方鼠标控制双方。
const choosePlayerSide = (player) =>{
function getLeftMouse(e){
let mousePos = calcMousePos(e);
lpaddle.y = mousePos.y - PADDLE_HEIGHT/2;
socket.emit('mousePos', mousePos);
}
function getRightMouse(e){
let mousePos = calcMousePos(e);
rpaddle.y = mousePos.y - PADDLE_HEIGHT/2;
socket.emit('mousePos', mousePos);
}
const gr = getRightMouse;
const gl = getLeftMouse;
if(player === 0){
console.log('choosing player 0')
this.setPlayer(0);
// Reset Event Listeners
canvas.removeEventListener('mousemove', gr);
canvas.removeEventListener('mousemove', gl);
canvas.addEventListener('mousemove', gl);
this.setInPlay();
}
else if(player === 1){
console.log('choosing player 1')
this.setPlayer(1);
canvas.removeEventListener('mousemove', gr);
canvas.removeEventListener('mousemove', gl);
canvas.addEventListener('mousemove', gr);
this.setInPlay();
socket.emit('newplayer');
}
}
太棒了。谢谢你的解释。 – DGwang