我正在用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