תקשורת פלאש ו Javascript באמצעות ExternalInterface
דוגמא קלאסית לתקשורת בין הפלאש ל - Javascript וחזרה - התחברות לפייסבוק מאתר קונקט (אפליקציית פייסבוק חיצונית) שבנוי בפלאש.
השלבים בתהליך כזה הם:
הקלקה של הגולש על כפתור התחברות בפלאש
תהליך התחברות לפייסבוק באמצעות Facebook Javascript SDK
עדכון הפלאש לאחר ביצוע הפעולה להמשך תהליך באתר
פעולת ההתחברות לפיייסבוק נעשת באמצעות Facebook Javascript SDK ולכן הפלאש צריך להעביר את הבקשה של הגולש לפונקציית JS חיצונית ולהמתין לקבלת תשובה.
קריאה מהפלאש לפונקציית JS
כדי לעשות את ההסבר קצר וברור נוותר על פעולת ההתחברות לפייסבוק עצמה ובמקום נציג טקסט ב alert,
אז יש לנו קובץ HTML עם קטע קוד JS המכיל את הפונקציה:
function connect_with_facebook(){
alert('ok, connecting...');
}
כדי לקרוא לפונקציה מהפלאש נשתמש בפקודה ExternalInterface.call על הכפתור בצורה הזו:
on(release){
flash.external.ExternalInterface.call("connect_with_facebook");
}
קריאה מ JS לפונקציית פלאש
יופי, עברנו חצי דרך עכשיו רק נשאר לנו לבקש מהפלאש להמתין לתשובה חזרה מהJS, את זה עושים עם פקודת addCallback שמסבירה לפלאש כיצד לחכות לתשובה:
function lets_go_on(){
trace('you are connected, lets go on...')
}
flash.external.ExternalInterface.addCallback("user_connected", this, lets_go_on );
לפונקצייה addCallback שלושה פרמטרים:
user_connected - הפרמטר הראשון של הפונקציה הוא השם שהJS ישתמש לתקשורת עם הפלאש
this - מגדיר את הרמה בה יושבת פונקציית שתפעל מיד עם קבלת התשובה
lets_go_on - שם פונקצייה שהמצנו בפלאש אותה נרצה להפעיל לאחר קבלת התשובה
עכשיו הפלאש מוכן לקבל תשובה ולהיות מופעל ע"י המארח שלו (JS), כדי שנוכל להתייחס לאובייקט הפלאש בעמוד ניתן לו ID ייחודי שיהיה השם שלו,
את השם של הפלאש מגדירים בקריאה לפלאש - אם אתם משתמשים בתגית OBJECT או swfobject.js או RunActiveContent.js וכו' אז ליד כל שאר הפרמטרים של גובה, רוחב, צבע רקע וכדומה יש גם פרמטר ID, תנו לו שם חוקי (רק איתיות קטנות באנגלית ומקו תחתון).
בדוגמא שלנו השתמשנו בשם "flash_id"
ענייני אקספלורר
הקריאה לפלאש באקספלורר שונה משאר הדפדפנים (כן, שוב פעם אקספלורר עושה בעיות...), לכן נשתמש בפונקציה שמזהה את הדפדפן ומחזירה את הייחוס לפלאש בצורה אחידה לכל הדפדפנים:
function getFlashMovie(movieName) {
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
ולסיום נבקש מהJS לקרוא לפלאש עם השם user_connected שהוגדר קודם לכן:
// קוד להרצה אחרי שהמשתמש התחבר
getFlashMovie('flash_id').user_connected();
זהו, יש לנו את המבנה לתקשורת פלאש וJS בצד לקוח עכשיו תלבישו עליו כל אינטראקציה שמתאימה לפרוייקט שלכם.































