سؤال

أنا أكتب بعض الفصول الدراسية للبرمجة النصية 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 الكائن الذي كان يسبب المشكلة. شكرا لمساعدتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top