כמה אומץ היה למקרומדיה במעבר הקיצוני מפלאש 4 לפלאש 5. שפה שלמה שנבנתה במיוחד לפלאש, עוד מגרסה 3, נמחקה לחלוטין וכל פקודותיה עלו על החרב. באחת הופיעה שפה חדשה לגמרי, פרט לשמה Action Script, דבר לא היה זהה.
ואכן, זה היה השדרוג הגדול ביותר בין גרסה 4 ל-5. והיום, כש-MX עומדת לפרוץ אל העולם, ננסה להבין מה השתנה בתחום זה של התוכנה וכמובן, מה לא.
ובכן, יש עוד תכנות. יש עוד לא מעט תכנות בפלאש MX. בהתאם לגישה עליה דיברנו בתחילת השבוע של התמקדות בתחומי המדיה והבידור בקו ה-MX של מקרומדיה, גם שפת הסקריפטים של MX פותחה כך שתתאים לעבודה כזו.
תמיכה מוגברת בתקן ECMA
כאמור תקן ECMA הוא תקן בינ"ל לכתיבת סקריפטים, אשר פותח על ידי איגוד התעשינים האירופאי. מטרת פיתוח התקן היתה להיא לידי כך שתהיה תאימות מירבית בין דפדפנים אשר משתמשים בשפות סקריפט בעמודי HTML. על תקן זה מבוססת JavaScript ובגרסה 5 של פלאש, התווספה שפת Action Script שהיא עצמה גם כן מבוססת על אותו תקן.
התמיכה בתקן לא היתה מלאה, ופקודות רבות אשר מופיעות בתקן לא הופיעו בפלאש. ב-MX חוזרים המקרומדיאנים ומבקשים לתקן את החסר עם הוספתן של פקודות ECMA נוספות.
בין הפקודות העיקריות נוסף משפט Switch המוכר מ-C, C++ ושות' לבדיקת תנאי רב ברירתי, ופקודות setInterval ו-clearInterval המוכרות לרבים מ-JavaScript. שתי פקודות אחרונות אלו מאפשרות תזמון של פקודות קוד אשר תורצנה אחת לזמן קצוב.
עד בואה של MX נאלצנו להמציא תכנות מיוחד שזכה לא מכבר לשם "תכנות פלאשי". תכנות ייחודי לסביבת פלאש, שניסה להתמודד עם הקבלות של קווי זמן שונים בסרט. הבעיה היא, שבפלאש קיים קו הזמן של הסצנה הראשית עצמה, ובתוכה קווי זמן מקבילים של הקליפים המוכלים בה.
למשל, כדי לייצר פונקציה שתורץ אחת ל-5 שניות, הייתי נאלץ לעשות משהו מוזר מאוד, ייחודי רק לפלאש. הייתי מייצר קליפ שרץ באופן מחזורי על מספר פריימים, כך שפריסתם נמתחת על 5 שניות, ובפריים הראשון הייתי ממקם את הפונקציה. דבר מוזר לכל מתכנת מתחיל, אבל מה לעשות, זה מה יש עם זה מסתדרים.
ב-MX יש את setInterval שתאפשר לי בפקודה אחת לקרוא לפונקציה אחת לכמה זמן, כתהליך נפרד, ללא קשר לריצת הסרט.
השורה הבאה, למשל, קוראת לפונקציה myFunction שוב ושוב אחת ל-5 שניות (שזה 5000 מילישניה):
a=setInterval( myFunction() , 5000 ) ;
זה הכל. את ההשמה למשתנה a עשיתי על מנת שאוכל מאוחר יותר לנקות את התהליך המחזורי מהזכרון ובכך, להפסיקו באופן הבא:
clearInterval(a) ;
פשוט, חשוב וטוב שזה כאן.
אובייקטים חדשים
בפלאש 5 קיבלנו שפה משובחת למדי עם אפשרות טיפול במודל אובייקטים, עם תחביר הנקודה המוצלח. אבל מה, היה שם רק אובייקט מסוג אחד: ה-MovieClip. אליו יכולנו לפנות בקוד, לתפעל שיטות (Methods) שלו ולשנות לו תכונות (Properties).
מה לא היה לנו אז? מה שיש לנו עכשיו: סרטוני וידאו יכולים לתפקד כאובייקטים לכל דבר, תיבות טקסט גם הן מתפקדות כאובייקטים, ואפילו פותח אובייקט מיוחד לתיבות טקסט. וגם לחצנים היום יכולים לקבל שם של אובייקט ולהשתנות על ידי שימוש בתחביר הנקודה דרך קוד.
למשל, אם ללחצן שלנו קראנו myButton, אז השורות הבאות משנות את רוחבו וגובהו:
myButton._height = 30;
myButton._width = 30;
באותה הדרך ניתן לפנות אל מאפייניו של סרטון וידאו, ותיבת טקסט.
שני אובייקטים חדשים קשורים לטקסט. האחד הוא TextBox, אשר מטפל רק בתיבות טקסט דינאמיות ותיבות קלט, ומאפשר פניה למאפייניו, ושינויים בזמן ריצה. אתם יכולים לשנות את כל מאפייני תיבות הטקסט היום דרך הקוד וזה כולל בין היתר: גודל התיבה, סוגה, צבע הרקע שלה, צבע הגבולות שלה ועוביים, ערכה, צורת ה-Scrolling שלה ועוד.
אובייקט שני הוא האובייקט TextFormat שמאפשר יצירת טקסט, כולל עיצובו, סוג הפונט, גודלו, צבעו ועוד כל זה דרך קוד.
אובייקטים נוספים הם האובייקטים עליהם רמזתי קודם של מיקרופון ומצלמת אינטרנט. אלו מאפשרים תקשורת עם הגאדג'טס האלו, ותיפעולם דרך פלאש בקוד מה שמעלה אצלי זעקת "וואוו" קלילה במרתפי בטני. רק על זה צריך בכלל לכתוב כתבה שלמה...
ויש גם אובייקט לבדיקת יכולות הדפדפן של הלקוח, אובייקט עכבר עם יכולות משופרות (כמו לכידת אירועי עכבר בעזרת מאזינים שמופעלים רק מהקוד), אובייקט חדש לבמה (שיכול למשל לעשות יישור מתוך קוד), אובייקט הוידאו ואובייקט מיני. בקיצור איפה שלא תסתכלו יש יגיח לכם איזה אובייקט כזה עם תכונות ושיטות מול העיניים.
ציור בזמן ריצה
אפשרות מתקדמת זו, נותנת בידינו את הכוח לצייר צורות מסוג Shape בזמן ריצה (אולי פשוט נקרא לה: "פלאש זמן ריצה"?).
שימו לב לקוד הבא:
createEmptyMovieClip("myRect", 1);
with (myRect)
{
beginFill(000000, 50);
moveTo(100, 100);
lineTo(100, 200);
lineTo(200, 200);
lineTo(200, 100);
lineTo(100, 100);
endFill();
}
תאמינו או לא אבל זה הקוד מצייר מרובע. צבעו שחור, שקיפותו 50% והוא עובר בין הנקודות המצוינות לעייל. פשוט לא?
אז אם בא לכם ליצור צייר (Painter) פלשאי לבד, הנה ההזדמנות שלכם.
****
אפשרויות נוספות לטיפול באירועים נוספו גם ללחצנים וגם לקליפים (וגם לאובייקטים האחרים, אבל קצרה היריעה). למעשה, בפלאש MX קליפ יכול להיות לחצן וההיפך. בגרסה 5 קיבלנו אירועים ייחודיים רק לקליפים, אבל באירוע פשוט כמו On Release שמשויך ללחצנים לא יכולנו לטפל.. אז היום בדור ה-MX, גם זה מתאפשר.
השורה הבאה למשל, תריץ את הקוד בשחרור לחיצת עכבר ע"ג הקליפ ששמו myClip:
myClip.onRelease = function() {
gotoAndPlay(2);
}
מה ששלי - שלך
אחד החידושים שהביאה Action Script בגרסה 5, היה האפשרות לטעון אובייקטים בזמן ריצה. כך ניתן לטעון קליפים, ללא הצורך להכיל אותם בסרטון הפלאש עצמו, מה שמקל על נפח הקובץ ובכלל מקל על החיים שלי ושלכם. MX מאפשרת לעשות זאת לגבי קליפים, סרטוני וידאו, סצנות וסאונד.
MX מביאה איתה גם אפשרות של שיתוף סמלים בין מחשבים. ניתן ליצור קובץ פלאש אשר מכיל מספר אובייקטים, ובכל סרטון אחר להשתמש בהם על ידי קישור חיצוני אליהם בזמן ריצה. כשיחליט בעל הסמלים לשנות אותם, הם ישתנו אוטומטית בכל הסרטונים המשתמשים בהם. ממש שיתוף מלא. כמו בקיבוץ.
שימו לב, מילת המפתח כאן היא זמן ריצה. שיתוף ספריות כבר היה קיים בגרסה 5, ההבדל הוא שב-MX ניתן לעשות זאת בזמן ריצה, דרך סקריפט פשוט למדי, כך אין צורך להכיל את הסמלים בתוך הקובץ הסופי, אלא לטעון אותם בריצה. שימו לב בכלל, שינויים רבים קורים פה לעבודה בזמן ריצה. אם פעם (שזה בדיוק אתמול) הקובץ הסופי היה כל כך מנופח, כי הכיל קליפים, סמלים, תמונות, סרטים, קבצי סאונד ועוד... היום נוכל ליצור קובץ פלאש קטן יחסית שרב חלקיו נטענים בזמן הריצה ואינם מוטמעים בקובץ הסופי. ממש כמו בסביבות תיכנות אחרות (לראיה ה-Resources של MFC, VB ושות'), התמונות יהיו חיצוניות, קבצי הסאונד חיצוניים, הסמלים עצמם אפילו חיצוניים, גם סצנות של הסרטון יכולות להיות חיצוניות וגם החלל חיצון.
*** ה-Smart Clips של גרסה 5 נסעו להודו, שינו את השם וחזרו ***
כן, זה נכון. עכשיו קוראים להם Flash UI Componenets, שזה בעצם אותו דבר בדיוק, עם כמה שינויים בעיקר בצד התכנותי ותמיכה רחבה יותר באינטגרציה עם התוכנה.
כמו פקדים רבים מסביבות מוכרות (כמו VB ושות') פלאש תגיע עם מספר פקדים, כשלכל אחד מהם תוכלו לפנות על-ידי קוד, וכמובן תוכלו לשנות אותם ולייצר פקדים משלכם, לשמור ולהפיץ אותם ללא הבחנה לכל עבר.
חביבת הקהל XML
גם על XML, חביבתי, לא פסחו השינויים. כאן נוספו אפשרויות לעריכת מסמכי XML, דבר שלא ממש עבד טוב בגרסה הקודמת והביא איתו הרבה סבל רגשי, נפשי וכאבי ראש (במקרה שלי גם מקלדת מרוסקת למחצה).
בגרסה הראשונה של פלאש 5, העבודה עם XML הגיעה עם לא מעט באגים. כך למשל, פלאש לא טיפלה נכון בקבצי XML חיצוניים שלא נכתבו בשורה אחת ארוכה מכאן ועד הקצה השני של העולם. מקרומדיה טענה אז, שזה לא "באג באשמתה", כי אם בעייה בתקן של המפענח של XML (הפארסר) אשר נבנה על טכנולוגיות של W3 ובגרסתו הראשונה החשיב תוי TAB כרכיב XML, או במשפט אחד: "זה לא באג, זה פיצ'ר".
שיפורים רבים באים גם לפתור אותנו מקשיי התקשרות עם השרת. היום ניתן באמצעות XML או HTTP, ליצור עבודה עם נתונים שכולה תתבצע על מחשב הלקוח, ורק בתום העבודה תועבר לשרת, ללא צורך בקריאות חוזרות ונשנות לשרת ומבלי לנג'ס לו יותר מדי. שיפורים כאלה, הם רציניים למדי, וקצרה היריעה מלפרט לגביהם, אבל הם יביאו לנו צ'אטים, פורומים והרבה תכנים דינמיים פלשאיים בקרוב. וזה טוב. לרוב. בבית וברחוב.
עורך התסריטים עוד קצת ונשנה לו את השם ל-VB MX
לא עוד עורך טקסטואלי פשוט! עורך התסריטים עצמו שונה למדי, והוא מכיל היום אופציות מתקדמות לעבודה עם קוד, בדיקתו, ודיבוגו.
העורך צובע טקסט בצורה מצוינת, מקפיץ חלונות עזרה קטנים וחלונות טיפים אשר נותנים מושג לגבי אופן הכתיבה של פונקציות והשימוש בהן.
אפשרות חדשה של Find & Replace (תרשמו על זה פטנט, מהר!).
היום כשתכתבו את המילה On ותפתחו סוגריים כמבקשים ליצור פונקציית טיפול באירוע, תיפתח תיבת אפשרויות המפרטת את האירועים הקיימים ומתוכם אפשר לבחור.
התיקיות והתפריטים עדיין שם, סך כל באופן די מסודר, רק שהרבה פקודות קצת נעלמות מהעין בתוך כל מבוך התפריטים הזה.
ובדיוק בגלל זה הביאו לנו אינדקס אלפביתי! טוב שבאת מיסייה אינדקס, כי איבדתי את הפקודות שלי כבר בתוך כל התפריטים הללו.
העורך מגיע גם עם Debugger מצוין, הכולל מספר פעולות מוכרות כמו נקודות עצירה (Break Points) וצעידה בקוד (Code Stepping), ממש כמו בסביבות העבודה המוכרות למתכנת המתחיל. אפילו Call Stack יש שם. מה שמעניין הוא שאת הדיבוג ניתן לעשות גם במסגרת התוכנה וגם בכל דפדפן.
ומה אותי משגע? שעדיין אין תמיכה ב-Copy/Paste "של המתכנתים". Ctrl+Insert, Shift+Insert. אני עדיין מעתיק-מדביק עם קיצורי מקלדת של וורד.
"מקרומדיה"! אם לתכנת כמו כולם, אז לפחות שהקיצורים יהיו קיצורים!
!HELP
זעקת המבולבלים נשמעה ברחוב. מה זה כל הפקודות החדשות האלו ואיך לומדים עליהן, ועכשיו??!??&^$%!%^???
תשובתי: "דרך ה-HELP של התוכנה".
MX מגיעה עם קובץ עזרה ענק בגודלו הכולל הסברים מפורטים על כל הפקודות החדשות, האובייקטים, מאפייניהם, שיטותיהם, דרכי העבודה איתם ודוגמאות להפעלה.
ויש גם רפרנס מצוין לכל הפקודות, מובנה ממש בתוך התוכנה. מקמו את הסמן על מילת קוד כלשהי, ליחצו F1 ויפתח חלון עם הסבר הפקודה, פקודות דומות, ואפילו קוד לדוגמה. זה טוב.
*** לסיכום נושא זה ***
התכנות בפלאש מתחיל להיראות יותר ויותר מתקדם מגרסה לגרסה. יש עדיין דברים שהייתי רוצה לראות בתחום זה, כמו למשל, תקשורת TCP/IP ישירה בין מחשבים, ללא צורך בשרת, אבל ללא ספק, MX שונה מאוד מהגרסה הקודמת בתחום זה.
אחחח... נושא כבד נפל עלינו, ללא ספק, אבל ככה זה עם תוכנות "גראפיות".
***********
הכותב הינו מרצה בכיר במכללת סיון ובמכללות אחרות בארץ בתחומי הגראפיקה והתכנות, בעל רקע אקדמאי במחשבים, ובעל תארים בינלאומיים של מיקרוסופט בבניית אתרים מסחריים.
בימים אלו הוא שוקד על ספר חדש בנושא "פלאש MX".
ניתן ליצור עמו קשר בכתובת: shaieden@inter.net.il