Ich mache eine Zeichnungsanwendung mit dem HTML5 Canvas. Ich versuche, OOP zu verwenden und alle globalen Variablen zu vermeiden. Ich habe eine PainLab Klasse und eine ZeichenklasseProblem mit objektorientierter Programmierung und Onmousedown-Funktion
var PaintLab = function() {
this.drawing = new Drawing();
//Define some methods
var self = this;
canvas.addEventListener('click', MouseDown, self, false);
};
var Drawing = function() {
this.position = { x: 4, y: 200 };
this.size = { width: 500, height: 500 };
};
Wie Sie Ich habe ein Ereignis-Listener für den Benutzer hier die Leinwand klicken sehen kann, ist, was die MouseDown- Funktion.
var MouseDown = function(paintLab, evt) {
var mouseX = evt.clientX;
var mouseY = evt.clientY;
//Check is user clicked the drawing which is a square element on the canvas
if (x >= paintLab.drawing.position.x && x <= paintLab.position.x + paintLab.drawing.size.width &&
y >= paintLab.drawing.position.y && y <= paintLab.position.y + paintLab.drawing.size.height) {
//Draw to canvas
}
};
Wenn ich diesen Code verwende, sind clientX/Y und paintLab nicht undefiniert. Am wahrscheinlichsten löscht PaintLab() 's Bereich diese Informationen, aber was ist der beste Weg, dies zu überwinden? Ich schätze jede Hilfe!
Dies beseitigt das Problem mit clientX und Y, aber jetzt drawing.position.x ist undefiniert. Was kann ich tun, um das zu beheben? Beachten Sie auch, dass ich einen Prototyp verwendet habe, um die mouseDown-Funktion zu deklarieren. –
Ich bin mir nicht sicher, woher die "Zeichnung" -Eigenschaft kommen soll. Es hätte auch nicht in deinem ursprünglichen Code funktioniert ... Wie hast du diesen Code überhaupt bekommen? –
Ich lege die Zeichenklasse in die ursprüngliche Frage, hoffe es hilft! Danke auch für die bisherige Hilfe. –