0
我有這段代碼,在點擊並拖動時在畫布周圍拖動一個球。使用removeEventListener刪除包裝函數回調
canvas.addEventListener('mousedown', function() {
var initialClickX = mouse.x;
var initialClickY = mouse.y;
var initialBallX = ball.x;
var initialBallY = ball.y;
canvas.addEventListener('mousemove', function() {
onMouseMove(initialClickX, initialClickY, mouse.x, mouse.y, initialBallX, initialBallY)
}, false);
}, false);
function onMouseMove(initialClickX, initialClickY, mouseX, mouseY, initialBallX, initialBallY){
ball.x = mouseX + initialBallX - initialClickX;
ball.y = mouseY + initialBallY - initialClickY;
draw();
}
問題是,當我mouseup時,我不能讓球停止拖動。我知道,我需要添加:
canvas.removeEventListener('mousemove', function() {
onMouseMove(initialClickX, initialClickY, mouse.x, mouse.y, initialBallX, initialBallY)
}, false);
但由於功能是在包裝上面沒有任何作用,球仍然堅持我的光標。任何人都可以提出一個解決方法嗎?
製作一個實際的命名函數,其中包含您的偵聽器代碼。然後使用'canvas.addEventListener(「mousemove」,functionReference,false);'和更高版本'canvas.removeEventListener(「mousemove」,functionReference);'。所以你應該有'var functionReference = function(){onMouseMove(initialClickX,initialClickY,mouse.x,mouse.y,initialBallX,initialBallY); };' – Ian