Mit addEventListener hinzufügen einer callback-Argumente
Ich bin momentan dabei, ein drag-und-drop-system mit einer Leinwand.
canvas.addEventListener('mousedown', function () {
window.initialClickX = mouse.x;
window.initialClickY = mouse.y;
window.initialBallX = ball.x;
window.initialBallY = ball.y;
canvas.addEventListener('mousemove', onMouseMove, false);
}, false);
function onMouseMove(){
ball.x = mouse.x + window.initialBallX - window.initialClickX;
ball.y = mouse.y + window.initialBallY - window.initialClickY;
draw();
}
Wenn ich darauf klicke, muss ich die Werte für die initial-position der Maus und der erste ball position, so kann ich richtig ziehen Sie den ball um.
Der obige code funktioniert perfekt, aber ich denke, es sieht chaotisch mit all den globalen Variablen. Ich möchte onMouseMove übernehmen zu können die Parameter initialClickX, initialClickY, initialBallX und initialBallY. Aber wie kann ich diese Parameter an die callback-Funktion?
Oder ob es einen besseren Weg, dies zu tun, lassen Sie mich bitte wissen, danke.
Ich habe nicht wirklich an ihn denken, konnte aber nicht erstellen Sie ein Objekt oder eine Instanz und Eigenschaften zu speichern?
InformationsquelleAutor Lars | 2013-06-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie es mit einem wrapper-Funktion, es zu tun.
initialBallX
undinitialBallY
richtig. Diese tut. Keine globalen Variablen. Einfach nur pure awesome.was ist, wenn wir in eine Klasse, befestigen Sie die Veranstaltung mit einer callback-Funktion und einige Parameter, bedeutet das, dass Funktion deklariert werden, außerhalb der Klasse? das ist ärgerlich.
InformationsquelleAutor Mathias Lykkegaard Lorenzen
Verwenden Sie eine Verpackung stub-Funktion setzt die Parameter:
InformationsquelleAutor Marvin Emil Brach
Hier ist ein kleines Beispiel, wie man das tun könnte, ohne die Verwendung von globalen Variablen:
Im Grunde sind Sie auf
called
eine Reihe von vordefinierten Parametern, in diesem Fall'a'
und'b'
.So, in Ihrem Fall ist es etwas wie:
InformationsquelleAutor Alberto Zaccagni