BDNHOST · AE SCRIPTS LAB
מדריך 06 · Automation · סיום Phase 1

סקריפטים באפטר —
הפעם שהמחשב עובד.

עד פה ראינו את אפטר מנקודת המבט של עכבר וקיבורד — לוחצים, גוררים, מעצבים. עכשיו נפתח את הקופסה. סקריפט הוא פיסת קוד שמפעילה את אפטר במקומכם. במדריך הזה נבין מה זה בדיוק, איך זה עובד, ואיזה עולם זה פותח.

זמן קריאהכ-16 דקות רמהבינוני דרישות קדםכל המדריכים הקודמים מיועד למקצוענים בעתיד
פרק 01 · הרעיון

מה זה בעצם סקריפט

סקריפט הוא קובץ טקסט עם קוד, שכשאפטר מפעיל אותו — הוא מבצע פעולות. זה הכל. אבל מה שאפשר לעשות עם הכל הזה — מדהים.

כל פעולה שאתם עושים באפטר — יצירת שכבה, שינוי תכונה, הוספת Keyframe — ניתן להפעיל גם דרך קוד. סקריפט הוא רצף של פעולות כאלה, שמבוצעות אוטומטית בלחיצה אחת.

דוגמאות מעשיות

הבדל בין סקריפט לפלאגין

תכונהסקריפטפלאגין
שפהExtendScript (JavaScript)C++
מהירות פיתוחמהירה מאודאיטית
גישה ל-AEדרך DOM — מגבלותגישה מלאה
הפצהקובץ .jsx — העתקהקובץ .aex — התקנה מערכתית
פיתוח אפקטיםלא אפשריכן (Blur, Glow, וכו')
אוטומציהמעולהמוגבלת

השורה התחתונה: סקריפטים הם לאוטומציה וזרימת עבודה. פלאגינים הם לאפקטים ופונקציונליות חדשה. הסקריפט של BDNHOST — וכל סקריפט סביר — נופל בקטגוריה הראשונה.

פרק 02 · ExtendScript

השפה של סקריפטים באפטר

סקריפטים באפטר כתובים ב-ExtendScript — הגרסה של Adobe ל-JavaScript. מי שמכיר JS — כבר מכיר 90% ממה שצריך.

ExtendScript הוא JavaScript ES3 (1999!), עם הרחבות של Adobe. זה יותר פרימיטיבי מ-JavaScript המודרני — אין let, אין const, אין arrow functions. רק var ו-function.

// סקריפט מינימלי שיוצר שכבת טקסט
var comp = app.project.activeItem;
if (comp && comp instanceof CompItem) {
    var textLayer = comp.layers.addText("שלום עולם");
    textLayer.position.setValue([comp.width/2, comp.height/2]);
}

זה הכל. 4 שורות. יצרו שכבת טקסט במרכז הקומפוזיציה. אותו תוצאה שיעשה מתחיל בעבודה ידנית של 30 שניות, המחשב עושה בפחות מ-100 אלפיות שנייה.

תחביר בסיסי

// הגדרת משתנה
var name = "יעקב";

// תנאי
if (name === "יעקב") {
    alert("שלום יעקב");
}

// לולאה
for (var i = 0; i < 10; i++) {
    $.writeln("איטרציה " + i);
}

// פונקציה
function greet(person) {
    return "שלום " + person;
}
הבדלים חשובים מ-JavaScript מודרני

ב-ExtendScript: אין let/const, אין Template Literals (backticks), אין Spread Operator, אין Destructuring. אם לומדים JS חדש — יש פער. אבל גם עם התחביר המיושן אפשר לבנות סקריפטים מקצועיים.

פרק 03 · DOM

היררכיית האובייקטים של אפטר

כדי לכתוב סקריפט, צריך לדעת איך לכתוב אל אפטר. המפתח הוא DOM — Document Object Model — העץ של כל מה שיש באפטר.

אפטר חושף את כל התוכן שלו כעץ של אובייקטים מקוננים. מהשורש (app) ועד לפרטים הקטנים ביותר (keyframe).

app
├── project │ ├── items // כל הקבצים והקומפוזיציות │ ├── activeItem // הקומפוזיציה הפעילה │ └── renderQueue // תור הרנדור ├── project.activeItem (CompItem) │ ├── layers // כל השכבות בקומפ │ ├── width, height, duration │ └── frameRate └── activeItem.layer(i) ├── property("Position") // תכונה │ ├── setValue(v) // שינוי ערך │ └── setValueAtTime(t,v) // keyframe └── property("Scale"), etc.

דוגמאות שימוש

// הפרויקט
var project = app.project;

// הקומפוזיציה הפעילה
var comp = project.activeItem;

// רוחב הקומפוזיציה
var w = comp.width;

// מספר השכבות
var n = comp.numLayers;

// שכבה ראשונה
var firstLayer = comp.layer(1);  // אפטר מתחיל לספור מ-1 ולא מ-0!

// שינוי מיקום של שכבה
firstLayer.property("Position").setValue([500, 500]);
מוקש נפוץ

אפטר מתחיל לספור שכבות מ-1, לא מ-0. comp.layer(0) יחזיר שגיאה. comp.layer(1) זו השכבה הראשונה (העליונה בטיימליין).

פרק 04 · התקנה והפעלה

איך מריצים סקריפט באפטר

יש 3 דרכים להפעיל סקריפט. כל אחת עם יתרון שלה.

דרך 1 — Run Script File (חד-פעמי)

איך עושים

File → Scripts → Run Script File.... בוחרים קובץ .jsx. הוא רץ פעם אחת.

מתי להשתמש: סקריפט שצריך להריץ פעם בחיים (למשל: "הפוך את כל הטקסט בקומפ לעברית RTL").

דרך 2 — ScriptUI Panels (כלי קבוע)

איך עושים

מעתיקים את הקובץ .jsx לתיקייה:

  • Windows: C:\Program Files\Adobe\Adobe After Effects [year]\Support Files\Scripts\ScriptUI Panels
  • Mac: /Applications/Adobe After Effects [year]/Scripts/ScriptUI Panels

מפעילים מחדש את אפטר. עכשיו הסקריפט מופיע בתפריט Window — כמו כל פאנל אחר.

מתי להשתמש: כלי שימוש יומיומי. כולל ה-SRT Subtitles Importer שלנו.

דרך 3 — תפריט Scripts (רצים מהתפריט)

איך עושים

מעתיקים את ה-.jsx לתיקיית Scripts (לא ScriptUI Panels). הסקריפט יופיע תחת File → Scripts → [שם הקובץ].

מתי להשתמש: סקריפט שמריצים מדי פעם אבל לא מייצר חלון. למשל "ייצוא מהיר של הקומפ הפעילה".

הגדרת רשות כתיבה

חיוני לפני הפעלה

סקריפטים שקוראים קבצים מהכונן (כמו SRT Importer שקורא קובץ SRT) דורשים רשות. Edit → Preferences → Scripting & Expressions, סמנו Allow Scripts to Write Files and Access Network, הפעילו מחדש.

פרק 05 · הסקריפט הראשון שלכם

נכתוב סקריפט שיוצר 10 שכבות טקסט

אין דרך ללמוד סקריפטים חוץ מלכתוב אחד. הנה דוגמה שלמה ופועלת — אפשר להעתיק ולהריץ.

// סקריפט ראשון — יוצר 10 שכבות טקסט מסודרות

function createTextLayers() {
    var comp = app.project.activeItem;
    
    // בדיקת תקינות
    if (!comp || !(comp instanceof CompItem)) {
        alert("פתחו קומפוזיציה לפני הרצת הסקריפט");
        return;
    }
    
    // Undo Group - חשוב לביטול פעולה אחד
    app.beginUndoGroup("Create 10 Text Layers");
    
    var centerX = comp.width / 2;
    var startY = 100;
    
    for (var i = 0; i < 10; i++) {
        var text = comp.layers.addText("שורה " + (i + 1));
        
        // מיקום — כל שכבה מעט מתחת לקודמת
        text.property("Position").setValue([centerX, startY + i * 80]);
        
        // צבע משתנה לפי אינדקס
        var textProp = text.property("Source Text");
        var textDoc = textProp.value;
        textDoc.fontSize = 60;
        textDoc.font = "Heebo-Bold";
        textDoc.fillColor = [i / 10, 0.5, 1];
        textProp.setValue(textDoc);
    }
    
    app.endUndoGroup();
    
    alert("יצרתי 10 שכבות! בדקו את הקומפוזיציה");
}

// הרצה
createTextLayers();

להריץ

  1. שמרו את הקוד ב-VSCode / Notepad++ כקובץ my-first-script.jsx.
  2. פתחו אפטר, צרו קומפוזיציה חדשה.
  3. File → Scripts → Run Script File...
  4. בחרו את הקובץ.
  5. הסתכלו בטיימליין — 10 שכבות טקסט נוצרו בשניה.
הדגמה של beginUndoGroup

app.beginUndoGroup() ו-app.endUndoGroup() עוטפים את כל הפעולות — כך שלחיצה על Ctrl+Z מבטלת את כולן יחד, לא אחת-אחת. זה ההבדל בין סקריפט חובבני לסקריפט מקצועי.

פרק 06 · הדרך קדימה

מה ללמוד כשמתחילים להתקדם

המדריך הזה הוא שער. העולם של סקריפטים באפטר עמוק — אבל ניתן להצלחה.

מקורות לימוד מומלצים

מה יבוא בהמשך הסדרה

Phase 1 מסתיים כאן. בשלבים הבאים (Phase 2-4) של הסדרה, נתעמק יותר באוטומציה:

★ רוצים לראות איך זה נראה בגרסה מקצועית?

SRT Subtitles Importer v1.0.0

הסקריפט שפיתחנו הוא דוגמה לכל מה שתיארנו פה — ExtendScript, ScriptUI Panel, טיפול ב-File I/O, RTL, ו-UX מלא. אפשר גם להסתכל בקוד (הוא פתוח בגרסאות מסוימות) כדי ללמוד מדוגמה אמיתית וחיה.

SRT Importer בחנות
סיום Phase 1

מזל טוב. אתם עכשיו מתחילים רציניים.

עברתם 6 מדריכים. מ"פתיחת אפטר לראשונה" ועד "הבנת ExtendScript". זה לא מעט. רוב האנשים לומדים אפטר לא מסודר — תוך צפייה בטוטוריאלים מפוזרים ביוטיוב. אתם עברתם מסלול מסודר.

מה הלאה? יש שתי אפשרויות. הראשונה: תרגול. פתחו אפטר, נסו לבנות פרויקט קצר שמשתמש בכל מה שלמדתם — קומפוזיציה עם שכבות, אנימציה, טקסט עברי, ואולי כתוביות עם SRT Importer. זה יקבע את הידע.

השניה: המשך הסדרה. ב-Phase 2 נכנס לעמקים יותר — Shape Layers מתקדם, מוטיון גרפיקס, Expressions. אם אהבתם את הסגנון של המדריכים האלה — הרשמו לרשימת העדכונים שלנו באתר BDNHOST כדי לקבל התראה על מדריכים חדשים.

משוב ותודה

המדריכים האלה נבנו בזמן ובמשאבים של BDNHOST Group כתרומה לקהילה הישראלית. אם הם עזרו לכם — שתפו. אם מצאתם טעות או רוצים להציע שיפור — כתבו ל-info@bdnhost.net. כל משוב נקרא באישית.