בחזרה לעמוד הבית

שימוש בפקודת FScommand



This tutorial is using the HEBREW (ISO-LOGICAL) character-set
כללי - בשיעור זה נלמד כיצד לתקשר בין אובייקט הפלאש לבין העמוד המכיל אותו ע"י שימוש בפקודת fscommand ושפת javascript.

ידע נדרש - HTML, הכרת javascript ברמה בסיסית


הפעלת ג'אווהסקריפט מתוך פלאש
הפעולה היחידה שפקודת fscommand עושה, היא בעצם להפעיל פונקציה מסוימת בעמוד ה - html המכיל את הקובץ, תוך יכולת להעביר מספר פרמטרים . מטרת הפונקציה היא לשמש כ"מתווכת" - היא מקבלת את הערכים מפלאש ולפיהם מבצעת פעולות בשפת ג'וואהסקריפט (כגון קריאה לפוקנציות אחרות או פעולות מקומיות שלא דורשות שימוש בפונקציות אחרות).
הפקודה לא מבצעת את שינוי הצבע למשל מתוך הפלאש עצמו - היא רק מפעילה את הפונקציה המתאימה בעמוד, עם טקסט שבמקרה הזה הוא שם של צבע. באותה מידה היינו יכולים להשתמש בטקסטים ללא שום קשר לפעולה עצמה ולפרש אותם בכל דרך שנרצה - השמות שאנחנו מעבירים הם רק טקסטים שנועדו להקל על חיי המתכנת על מנת שיבין למה הכוונה בפקודה.

על מנת לאפשר שימוש ב fscommand בקובץ יש לבחור באפשרות המתאימה בסימניית HTML שבתפריט Publish Settings:




לאחר שנעשה לקובץ Publish, יווצר שם מזהה (ID) לסרט אשר מאפשר את התקשורת הדו-כיוונית עם ה - swf כמו שנוכל לראות בקוד הלקוח מעמוד זה:
 <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/...#version=5,0,0,0"
	ID=flashMovie
	WIDTH=400
	HEIGHT=70>
	<PARAM NAME=movie VALUE="flashMovie.swf"> 
	<PARAM NAME=quality VALUE=high> 
	<PARAM NAME=bgcolor VALUE=#CCCCCC> 
	<EMBED 
		src="flashMovie.swf" 
		quality=high 
		bgcolor=#CCCCCC  
		WIDTH=400 
		HEIGHT=70	
		swLiveConnect=true 
		NAME=flashMovie 
		TYPE="application/x-shockwave-flash" 
		PLUGINSPAGE="http://www.macromedia....=ShockwaveFlash">
	</EMBED>
</OBJECT>
את הפקודה FScommand נמצא תחת תפריט Actions:




לפקודת FScommand יש 2 פרמטרים שאנחנו יכולים להעביר:

command - פרמטר זה הוא חובה - על פיו אנחנו בוחרים איזה חלק להפעיל בתוך הפונקציה (בדוגמא שבעמוד - שינוי צבע, שינוי גודל וכו').
args - אין חובה למלא חלק זה - לא תמיד אנחנו רוצים להעביר ערכים לפונקציה. בדוגמא שבעמוד אנחנו מפעילים alert עם כתובת העמוד, כאשר הפקודה שבפלאש רק קוראת לפקודה המתאימה בגאווהסקריפט.

כאשר הפקודה מופעלת, היא מעבירה את הפרמטרים command ו - args לפונקציה שנמצאת בעמוד ה - html עצמו.
הפונקציה מזהה את הפרמטרים ששלחנו בשמות שגם אנחנו מכירים: command,args ואת הקוד שמפרש את הפקודה אנחנו רושמים במקום המסומן לנו ע"י הטקסט Place your code here (אשר נכתב כהערת סימון וניתן למחוק אותו).
<SCRIPT LANGUAGE=JavaScript>
<!--
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Handle all the the FSCommand messages in a Flash movie
function flashMovie_DoFSCommand(command, args) {
  var flashMovieObj = InternetExplorer ? flashMovie : document.flashMovie;
  //
  // Place your code here...
  // 
}

// Hook for Internet Explorer 
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && 
	     navigator.userAgent.indexOf("Windows") != -1 &&
	     navigator.userAgent.indexOf("Windows 3.1") == -1) {
	document.write('<SCRIPT LANGUAGE=VBScript\> \n');
	document.write('on error resume next \n');
	document.write('Sub flashMovie_FSCommand(ByVal command, ByVal args)\n');
	document.write('  call flashMovie_DoFSCommand(command, args)\n');
	document.write('end sub\n');
	document.write('</SCRIPT\> \n');
}
//-->
</SCRIPT>
לדוגמא ראשונה ניקח את ה alert - תיבת האזהרה שאנחנו מפעילים ע"י fscommand שמכילה את כתובת העמוד
הפקודה הבאה רשומה על הכפתור Where שבתוך קובץ הפלאש:
fscommand ("myAlert"); 
בחלק הראשון של הפקודה, command, נרשום "myAlert" - טקסט פשוט, ללא שימוש בשום משתנים. את החלק השני של הפקודה, args, נשאיר ריק ובתוך הפונקציה שבעמוד, היכן שרשום Place your text here נרשום את התנאי הבא:
function flashMovie_DoFSCommand(command, args) {
  var flashMovieObj = InternetExplorer ? flashMovie : document.flashMovie;
  //
  if (command=='myAlert'){
	alert (document.location);
  }
}  
אנו בעצם משווים את הטקסט שהעברנו כרגע מתוך פלאש (command) לטקסט אחר ובמידה שהם שווים אנחנו מבצעים את פעולת ה - alert.
אין שום חשיבות למובן המילה שאנחנו מעבירים - באותה מידה יכולנו להשתמש בטקסט "ABC" על מנת להפעיל את ה alert.

היות ויש בסרט שלנו מספר כפתורים המשתמשים בfscommand אנחנו צריכים לדעת להפריד בין האירועים השונים - ניתן לעשות זאת ע"י מספר משפטי if..else או ע"י משפט switch..case במידה ויש הרבה אירועים, אבל בסופו של דבר הבחירה בשיטה היא ענין של נוחות למתכנת. בעמוד זה השתמשתי במשפט if..elseif על מנת להבחין בין הקריאה לשינוי צבע לבין הקריאה ל - alert.
function flashMovie_DoFSCommand(command, args) {
  var flashMovieObj = InternetExplorer ? flashMovie : document.flashMovie;
  //
  if (command=='changeColor'){
	document.bgColor=args;
  }else if (command=='myAlert'){
	alert ("you are in " + document.location);
  }
}  
בחלק הראשון של משפט התנאי, השתמשתי גם בנתון השני שפלאש מעביר - args. במקרה זה הנתון השני מכיל שם של צבע (כל כפתור מעביר את שם הצבע הרלוונטי)


הפעלת פלאש ע"י ג'אווהסקריפט
חלק זה קצת יותר מורכב היות והוא משלב פקודות לא מוכרות - תרגום לפקודות ג'אווהסקריפט של חלק מהפקודות בפלאש, המאפשרות שינוי מבחוץ של רכיבים בסרט (משתנים , tell target, שליטה על הסרט עצמו וכו').
את הרשימה המלאה של הפקודות ניתן להשיג באתר הבית של מקרומדיה בכתובת זו .
הרשימה שבקישור מכילה את כל הפקודות האפשריות (בנוסף לתאימות לגרסאות השונות של פלאש) אשר ניתן להפעיל על פלאש מתוך ג'אווהסקריפט.

בשיעור זה נדגים את הפקודות העיקריות שבהן משתמשים, על הסרטון הבא שנקרא "flashMovie2".










פקודות אלו, וכל שאר הפקודות המופיעות ב רשימת הפקודות המלאה מאפשרות להשפיע על כל חלק בסרטון הפלאש ומאפשרות שימושים שונים כמו העלמת תפריטים, הקטנת הפלאש למימדים שלא יפריעו לתפריט אחר בעמוד, שינוי רכיבים שונים בתוך סרטון הפלאש ללא צורך ברענון העמוד, עבודה עם נתונים בזמן אמת (ע"י קבלת והכנסת נתונים לתוך אובייקט הפלאש בזמן הריצה) ועוד אין סוף אפשרויות.
הבדל עיקרי אחד בין עבודה בפלאש לבין עבודה מג'אווהסקריפט הוא בפקודה setProperty אשר משתמשת בקודים מספריים במקום השמות המדוייקים (כמו בפלאש) למאפיינים השונים.
				דוגמאות לפקודות		

.GotoFrame(1)		- קופץ לפריים 2 - ספירת הפריימים מתחילה מ 0
.TgotoFrame ( "/mc", 2)	- כנ"ל, לגבי ציר זמן של מוביקליפ
.TgotoLabel("/mc", "label")	- קפיצה לליבל 
.TPlay("/mc")		- נגינה של מוביקליפ
.TStopPlay("/mc")		- עצירה של מוביקליפ

.GetVariable("varName")	- החזרת ערך של משתנה
.SetVariable("varname", value)	- קביעת ערך למשתנה

.TsetProperty ("/mcName",0,50)	- מיקום המוביקליפ ב - 50 פיקסלים בציר האיקס 
.TgetProperty("/mc",0)	- מחזיר את מיקום המוביקליפ על ציר האיקס

:כל הפקודות צריכות להיות רשומות בהמשך לשם האובייקט. לדוגמא

flashMovie2.TGotoFrame(23);


			קודים מספריים למאפיינים

שם המאפיין		קוד	         תיאור

X position		- 0	X מיקום על ציר ה 
Y position		- 1	Y מיקום על ציר ה 
X scale		- 2	אחוזי רוחב מהסימבול המקורי
Yscale		- 3	אחוזי גובה מהסימבול המקורי
currentframe	- 4	הפריים בו נמצא עכשיו ציר הזמן
totalframes	- 5	סך כל הפריימים בציר הזמן
alpha		- 6	שקיפות באחוזים
visibility		- 7	0 = hide , 1 = show
width		- 8	רוחב בפיקסלים
height		- 9	גובה בפיקסלים
rotation		- 10	סיבוב במעלות
target		- 11	הנתיב המלא של מוביקליפ מסויים
framesloaded	- 12	כמות הפריימים שהספיקו לרדת
droptarget		 - 13	הנתיב המלא של המוביקליפ שמעליו הפסקנו לגרור מוביקליפ אחר
url		- 14	הכתובת המלאה בה נמצא הקובץ שמוצג




									בהצלחה