У меня есть часть программного обеспечения JS, которая структурирована так
obj = new object[id]();
function wrapperFunction (e) {
var pos = findPos(this);
e._x = e.pageX - pos.x;
e._y = e.pageY - pos.y;
var func = obj[e.type];
if (func) {
func(e);
}
}
__
obj.line = function () {
this.started = false;
this.mousedown = function (e) {
}
this.mousemove = function (e) {
if (this.started) {
}
}
this.mouseup = function (e) {
if (this.started) {
}
}
}
Приведенный выше кодовый блок дублируется для нескольких фигур, поэтому имеется также obj.square obj.circle
и т. Д. *
У меня также есть объект формы, который выглядит следующим образом.
function Shape (type, color, height, width, radius, x, y) {
this.type = type;
this.color = color;
this.h = height;
this.w = width;
this.r = radius;
this.points = ["x","y"];
this.points["x"] = [x];
this.points["y"] = [y];
};
Я хотел бы инициировать объект формы в mousedown
для каждого объекта. * И заполнить объект формы информацией о проппорте.
Теперь к вопросу.
radius
рассчитывается для каждого mousemove
, а также height
и width
, но когда я добавляю shapes = new Shape(circle, black, 10, 10, null, e._x, e._y)
к mousemove
, это выглядит как ...
this.mousemove = function (e) {
if (this.started) {
shapes = new Shape(circle, black, 10, 10, null, e._x, e._y);
}
}
Объект формы не создается.
Если я создаю объект формы внутри функции-оболочки вместо mousemove
, тогда объект инициируется, но я не могу использовать radius
или height/width
.
Как я могу создать объект внутри другого объекта внутри функции-обертки, чтобы я мог использовать вычисленные термины внутри созданного объекта? Есть ли альтернативный маршрут, кроме того, что я делаю?