|
ידע נדרש
עבודה עם משתנים
פונקציות הן פיסת קוד מוכן מראש, אשר ניתן להשתמש בו מכל מקום בסרט ע"י קריאה. הפונקציה יכולה לשמש אותנו לחישוב ערך מסויים, לבדיקה או לביצוע חלק מסויים בסרט. למשל - בדוגמא המצורפת יש אנימציה של 2 כדורים - בלחיצה על הכפתור הראשון אנו שולחים לפונקציה שני שמות של movieclips בסרט (2 הכדורים) והיא, באופן עצמאי, מחשבת את המרחק בינהם ומזינה אותו לשדה המתאים. בלחיצה על הכפתור השני אנו שולחים לפונקציה אחרת את שמות הכדורים שלנו והיא מבררת את המרחק בינהם, והיא מחזירה את הערך על מנת שנוכל להשתמש בו בתוך נוסחא מסויימת או כמו במקרה שלנו, בשביל לשרשר את התוצאה לטקסט דינמי. |
|
לחץ כאן להורדת קובץ דוגמא |
|
בלחיצה על הכפתור העליון ("דרך א") אנו מפעילים את הפונקציה ושולחים לה 2 משתנים (שמות האובייקטים) מופרדים ע"י פסיק . הסדר בו אנו רושמים את המשתנים הוא חיוני, היות ובפונקציה מוגדר מראש הסדר בו היא מקבלת את המשתנים ולפיו עובד הקוד שבתוכה. הפעלת הפונקציה מה - action שבכפתור:
distOnly("obj1","obj2");
את הפונקציה אנו רושמים בתוך קיפריים כלשהוא כאשר היא לא יכולה להיות רשומה אחרי הקריאה - אם הקריאה לפונקציה מתבצעת מפריים 5, הפונקציה צריכה כבר להיות רשומה עד פריים 5 (ולא בפריים 6 למשל).
הפונקציה הראשונה בדוגמא שלנו מוגדרת לקבל 2 משתנים מקומיים לפונקציה - mc1,mc2 - הכוונה במשתנים מקומיים היא משתנים אשר מוכרים אך ורק בתוך הפונקציה עצמה - ברגע שהפונקציה מסיימת את פעולתה, המשתנים נעלמים, עד לקריאה הבאה לפונקציה. ישנה גם אפשרות להשתמש בפונקציה בלי משתנים כלל (לדוגמא פונקציה שמאפסת את כל המשתנים בכל פעם שקוראים לה).
function distOnly (mc1,mc2){
deltaX = _root[mc1]._x-_root[mc2]._x;
deltaY = _root[mc1]._y-_root[mc2]._y;
distance = int(Math.sqrt ((deltaX*deltaX)+(deltaY*deltaY)));
result = distance;
}
|
|
הפונקציה מבצעת את חישוב המרחק בין 2 האובייקטים שהיא קיבלה, ומכניסה את הערך לשדה result שנמצא על הבמה.
כמו בשאר הפקודות, גם בתוך הפוקנציה ניתן להשתמש בנתיבים (ל movieclips או משתנים), כשבמקרה שלא רושמים נתיב, ההתייחסות היא למיקום העכשווי (הטיימליין הראשי בדוגמא שלנו - root_) |
|
בלחיצה על הכפתור השני ("דרך ב") נוכל לראות שאנו עושים שימוש בפונקציה בתוך נוסחא (שרשור טקסט במקרה שלנו). במקרה כזה הפוקנציה צריכה להחזיר משתנה שאיתו יעשה החישוב (או שרשור הטקסט במקרה שלנו).
msg = distCalc("obj1","obj2") add " pixels between";
|
הפונקציה עצמה זהה לפונקציה הקודמת למעט הבדל אחד - הפקודה
return
שמחזירה ערך מסויים
(distance בדוגמא), ועם הערך הזה יעשה החישוב בנוסחא שממנה קראנו לפונקציה.
function distCalc (mc1,mc2) {
deltaX = _root[mc1]._x-_root[mc2]._x;
deltaY = _root[mc1]._y-_root[mc2]._y;
distance = int(Math.sqrt ((deltaX*deltaX)+(deltaY*deltaY)));
return distance;
}
|
|
לסיכום - היתרון בפונקציות שניתן לקרוא להן מכל מקום בסרט, להשתמש בהן בתוך משוואות שונות ולבצע דרכן פעולות שונות, הכל במסגרת אותן שורות אשר מרוכזות במקום אחד וניתן להתאימן למספר רב של אובייקטים (ע"י שליחת משתנים לפונקציה). |