Я пишу проект класса (мы должны построить игру Frogger с использованием холста HTML5), и у меня есть множество объектов, которые помогут мне с разными вещами, такими как обнаружение столкновений, движение и т. Д. ,Значение объекта Javascript не получает правильное значение
Этот объект является одним из тех, кто здесь. Каждый вид содержит объект Frame, который содержит вызов функции hitTest, который проверяет, сталкивается ли его кадр с переданным в кадре. По какой-то причине this.lr
сохраняет значение, которое первоначально было установлено в начале игры, и я не могу понять, почему он не обновляется на основе меняющейся исходной точки.
function Frame(origin, size) {
this.origin = utility.checkPoint(origin);
this.size = utility.checkSize(size);
var self = this;
this.lr = (function() {
return utility.checkPoint(new Point(self.origin.x + self.size.width, self.origin.y + self.size.height));
}());
this.tr = (function() {
return utility.checkPoint(new Point(self.origin.x + self.size.width, self.origin.y));
}());
this.ll = (function() {
return utility.checkPoint(new Point(self.origin.x, self.origin.y + self.size.height));
}());
/* Returns true if the two frames share any common pixels */
this.hitTest = function (frame) {
var isInXBounds = function (p) {
return (p.x >= self.origin.x && p.x <= self.tr.x);
};
var isInYBounds = function (p) {
return (p.y >= self.origin.y && p.y <= self.lr.y);
};
var isContained = function (p) {
return (isInXBounds(p) && isInYBounds(p));
};
return isContained(frame.origin) || isContained(frame.tr) || isContained(frame.lr) || isContained(frame.ll);
};
}
Так с помощью замыкания немедленно выполняет эту функцию? это не круто. Что произойдет, если я вызову Frame.lr в другом месте? Всегда ли оно возвращает только то, что первоначально было присвоено ему? Я чувствую, что это одна из тех неприятностей javascript – barndog
@shadow - Это не помеха. Это просто, что вы используете неправильный шаблон для создания своего класса. –
Хмм хорошо. Это нормально, что все мои объекты написаны с использованием шаблонов закрытия, если мои внутренние функции для этого объекта являются методами? – barndog