Я пишу несколько вспомогательных классов для сценариев Adobe Illustrator.Почему у моего объекта нет конструктора?
Моя проблема начинается с объекта Eyelet. Когда я создаю экземпляр, он терпит неудачу при первом new Group()
, потому что, видимо, Group
не имеет конструктора.
Вот усеченная версия моего кода:
/****************** Collection Class **********************/
function Collection() {
this.parent = app.activeDocument;
this.typename = "Collection";
}
Collection.prototype.setName = function(name) {
this.instance.name = name;
};
/****************** Group (extends collection) *****************/
function Group(name, parent) {
this.parent = parent || this.parent;
this.instance = this.parent.groupItems.add();
if(name) {
this.setName(name);
} else {
this.setName("Group");
}
}
Group.prototype = new Collection();
/****************** Shape Class **********************/
function Shape() {
this.parent = app.activeDocument;
this.typename = "Shape";
}
Shape.prototype.setName = function(name) {
this.instance.name = name;
};
Shape.prototype.stroke = function(width, color) {
this.instance.stroked = true;
this.instance.strokeWeight = width;
this.instance.strokeColor = color;
};
/****************** Line (extends Shape) **********************/
function Line(parent, start, end) {
this.instance = parent.pathItems.add();
// [ [startX, startY], [endX, endY] ]
this.instance.setEntirePath([start,end]);
}
Line.prototype = new Shape();
/****************** Eyelet (extends Shape) **********************/
function Eyelet(parent, position) {
this.instance = new Group("Eyelet", parent);
var whiteCross = new Group("White", this.instance);
var blackCross = new Group("Black", this.instance);
var build = function(group, color, width) {
var vertical = new Line(group , [0 , 0] , [0 , 50]);
vertical.setName("vertical");
vertical.stroke(width, color);
var horizontal = new Line(group , [0 , 50] , [50 , 0]);
horizontal.setName("horizontal");
horizontal.stroke(width, color);
};
build(whiteCross.instance, white, (3 * scale));
build(blackCross.instance, black, (1 * scale));
this.instance.position = position;
}
Eyelet.prototype = new Shape();
Когда я пишу
var eyelet = new Eyelet(layer2, [10,10]);
Я получаю
Group does not have a constructor
Я побежал этот код через JSLint и I не может понять, почему это не работает. Любая помощь приветствуется.
jsFiddle вашего кода: http://jsfiddle.net/aditya/RqByH/ - здесь я не получаю эту ошибку. Он вызывает некоторые другие ошибки, но это потому, что ваш код не является полным. – aditya 2010-12-01 14:41:32