لماذا لا يوجد شيء مُنشئ؟
-
29-09-2019 - |
سؤال
أنا أكتب بعض الفصول الدراسية للبرمجة النصية Adobe Illustrator.
مشكلتي تبدأ في كائن العيينة. عندما أقوم بتشكيله فشل في الأول 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 ولا يمكنني معرفة سبب عدم عمل هذا. أي مساعدة سيكون محل تقدير كبير.
المحلول
اتضح حقيقة أن هذا في Adobe Illustrator هو ذو صلة. أنا أعيد تسمية Group
يعترض على MyGroup
كما اقترح دان بريسلاو وعمل كما توقعت. يبدو أن المصور لديه عالمي Group
الكائن الذي كان يسبب المشكلة. شكرا لمساعدتك.
لا تنتمي إلى StackOverflow