Ich möchte nur ein Mausereignis "hören", wenn ein Kontrollkästchen angeklickt wird. Deshalb habe ich den folgenden Code:Hören Sie eine Mausereignis unter Bedingung
HTML
<input type="checkbox" id="magicLens" onchange="magicLens()">
<label for="magicLens">Magic Lens</label>
JS
function magicLens(){
const magicLens_checked = document.getElementById('magicLens').checked;
if (magicLens_checked === true){
canvas.addEventListener('mousemove', e => {
myAnonymous = arguments.callee;
...
// draw something at the current mouse position
// and therefore use the 'e' event object
});
}
else {
canvas.removeEventListener('mousemove', myAnonymous);
}
}
Problem ist, dass die Zeichnung (eine Linse) tritt auch auf, wenn das Kontrollkästchen nicht aktiviert ist (false
). Ich bin mir nicht einmal sicher, ob removeEventListener()
der richtige Weg ist, um damit umzugehen (obwohl ich die ganze Sache schon ohne es ausprobiert habe und das Ergebnis das gleiche war).
Vielleicht haben Sie eine bessere Idee, das Problem im Titel zu beschreiben. Fühlen Sie sich frei zu bearbeiten!
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/callee – Teemu
was ist mit dem Hinzufügen von Mousemove-Listener beim Start und im Inneren überprüfen, ob MagicLens aktiviert ist und sich entscheiden zu zeichnen oder nicht? – ReadyFreddy
Die Verwendung von 'arguments.callee' ist eine schlechte Vorgehensweise. Versuchen Sie stattdessen, eine benannte Funktion zu verwenden. – vassiliskrikonis