html5 tuvaliyle çizim uygulaması yapıyorum. OOP kullanmaya çalışıyorum ve tüm global değişkenlerden kaçınıyorum. Bir PainLab sınıf ve bir çizim dersiNesne yönelimli programlama ve onmousedown işleviyle ilgili sorun
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 };
};
Ona, burada tuval tıklayarak kullanıcı için bir olay dinleyicisi var görebileceğiniz gibi neyi MouseDown işlevidir var.
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
}
};
Bu kodu kullanırsam, clientX/Y ve paintLab tanımlanmamıştır. Büyük olasılıkla PaintLab() 'ın kapsamı bu bilgiyi siler ama bunun üstesinden gelmenin en iyi yolu nedir? Herhangi bir yardım için minnettarım!
Bu, clientX ve Y ile sorunundan kurtulur ancak şimdi drawing.position.x dosyası tanımlanmamıştır. Bunu düzeltmek için ne yapabilirim. Ayrıca mouseDown işlevini bildirmek için prototip kullandığımı unutmayın. –
"Çizim" özelliğinin nereden geleceğinden emin değilim. Orijinal kodunuzda işe yaramıyordu ... Bu kodu ilk etapta nasıl aldınız? –
Çizim sınıfını, asıl soruya yardımcı olacağını umuyorum! Şimdiye kadar tüm yardımlarınız için teşekkür ederim. –