פונקציות
|
|
|
|
בשיעור תלמדו איך להשתמש
בפונקציות |
|
|
|
|
|
|
|
|
מבוא |
|
|
|
שימוש בפונקציה שאנחנו מייצרים
זהה בעקרון לשימוש בפונקציות מוכנות כמו chr,substring וכו' (הכוונה היא כאן
לפונקציות שלא קשורות לאובייקטים כמו –Math.abs ודומיה ). אנחנו קוראים לפונקציה בצורה הבאה :
myfunction(); . ניתן גם ליצור פונקציה שמכילה פרמטרים , אבל בזה
נדון בהמשך . ההבדל בין הפונקציות הקיימות לבין פונקציות שמיוצרות על ידינו הוא
שאנחנו יכולים לבצע דברים אחרים חוץ מלהחזיר ערכים (לדוגמא: number(x); מחזירה את הערך המספרי
של num , ord(x) – מחזיר ערך
מספרי של תו וכו') . פונקציות שנבנות על ידינו יכולות גם לבצע כל מה שנרצה שיש
בו צורך בסקריפט שלנו . |
|
|
|
הבדל נוסף שיש בין פונקציות
שבנויות בפלאש לבין פונקציות שמיוצרות על ידינו הוא שהפונקציות ה-build in , ניתנות לקריאה
מכל time line
בצורה זהה , מכפתורים , מתוך mc
ומתוך כל אובייקט משתמשים בסינטקס functionname(); לעומת זאת , לפונקציות שנבנות
על ידינו יש time line
שעליו הם נמצאות – לדוגמא ה-_root , ואם נרצה להשתמש בהם
בכל מקום אחר , נצטרך להוסיף קישור ל-timeline , לדוגמא : _root.myfunction() אם הפונקציה על ה-_root
, או _root.ball.myfunction אם הפונקציה נמצאת
בתוך instance – "ball"
. |
|
|
|
כתיבת הפונקציה |
|
|
|
פונקציות נכתבות על keyframes . השלד של כל
הפונקציות זהה : |
|
Function myfunction(){ |
|
//code to act // |
|
} |
|
המילה function היא מילה שמורה שחייבים להשתמש
בה , אחריה כותבים את שם הפונקציה ואחריה פתיחה וסגירת סוגריים. שם הפונקציה
יכול להיות כל מילה שרוצים – למעשה נהוג להשתמש בשמות ארוכים המתארים את פעולת
הפונקציה כמו בשמות של symbols
או שדות טקסט . ההגבלה היחידה היא שהשם יהיה מורכב ממילה אחת בלבד . כמו כן לא
ניתן להשתמש בשמות של פונקציות שכבר קיימות בפלאש . במקרה של קבלת פרמטרים
בפונקציה יש צורך להשתמש בשם זמני לכל אחד מהפרמטרים המתקבלים , מופרדים על ידי פסיק , בתוך הסוגריים
.בתוך הקוד של הפונקציה ניתן להשתמש בשמות האלה , לדוגמא : |
|
function
AddTwoNumbers(x,y){ |
|
return x+y; |
|
} |
|
במקרה הזה הפונקציה AddTwoNumbers מקבלת ערכים של שני
מספרים – השמות x
ו-y הם סתמיים ומחברת אותם ומחזירה את
התוצאה . אם נרצה להשתמש בפונקציה הזאת נכתוב : |
|
Solution=AddTwoNumbers(20,30); |
|
והתוצאה תהיה ש-solution מקבל את מה שהפונקציה
מחזירה לו כלומר המספר הראשון פלוס המספר השני – כלומר 50 . |
|
|
|
שימוש בפונקציות לקיצור
תהליכים (subroutines) |
|
|
|
הסוג הראשון של הפונקציה שעליה
מדובר היא סוג ששונה מהפונקציות הקיימות בפלאש בזה שהוא לא מחזיר ערכים (בניגוד
לפונקציה addtwonumbers
שמחזירה ערך) . פונקציה לקיצור תהליך מטרתה הוא שנכניס לתוכה שלבים של מהלך
מסויים ( עם או בלי פרמטרים נוספים שיתקבלו מהמשתמש ) והיא תעשה הכל על פי
הסקריפט שהכנסנו לה מראש . |
|
כאן יכולות להיות לנו שתי סוגים
של פונקציות . |
|
|
|
|
פונקציות שלא מקבלות ערכים (fnc1.fla)
|
|
פונקציה שלא מקבלת ערך מבצעת
בכל פעם שקוראים לה את אותה פעולה בדיוק . |
|
לדוגמא : |
|
ניצור פונקציה שפונה ל-4 movieclips בעלי שמות שונים
ומעלימה אותם , ועוד פונקציה שמציגה אותם . |
|
|
|
Function hide(){ |
|
_root.a._alpha=0; |
|
_root.b._alpha=0; |
|
_root.c._alpha=0; |
|
_root.d._alpha=0; |
|
} |
|
הפונקציה הזאת יכולה לבצע דבר
אחד בדיוק – להעלים את movieclips
בעלי שמות a,b,c
ו-d . לא ניתן להכניס
ערכים אחרים , אם לדוגמא נרצה לתת שקיפות מסויימת לאובייקטים או שנרצה להעלים רק
את a ולא את b לא ניתן באמצעות הפונקציה הזאת . הפונקציה ההפוכה לה היא : |
|
Function show(){ |
|
_root.a._alpha=100; |
|
_root.b._alpha=100; |
|
_root.c._alpha=100; |
|
_root.d._alpha=100; |
|
} |
|
|
|
מתי נשתמש בפונקציות כאלה ? |
|
כאשר נרצה לבצע פעולות
קונקרטיות מסוג זה , לדוגמא מצב שבו לחיצה על כל movie clip
או לחיצת כפתור גורמת להעלמת כל האובייקטים . במקום לכתוב את כל הסקריפט הזה בכל
אובייקט ניתן פשוט להשתמש בפונקציה , והיא תעלים או תציג את כל האובייקטים . |
|
|
|
|
פונקציות שמקבלות ערכים(fnc2.fla)
|
|
|
|
בהמשך לדוגמא הקודמת , נניח
שאני רוצה להעלים את אחד האובייקטים בלבד , ואני רוצה להשתמש באותה פונקציה
בשביל כל אחד מהאובייקטים כלומר לא לכתוב : |
|
Function hidea(){ |
|
_root.a._alpha=0; |
|
} |
|
Function hideb(){ |
|
_root.b._alpha=0; |
|
} |
|
וכו ' מכיוון שאז אני לא חוסך
שום דבר , אלא לכתוב פונקציה אחת , שתוכל לקבל את שם ה-movie clip שאותו נרצה להעלים ,
ולבצע עליו את הפעולה . |
|
צורת הכתיבה של פונקציות
שמקבלות ערכים היא : |
|
Function myfunction(x){ |
|
//do stuff with x// |
|
} |
|
תסתכלו גם על הדוגמא למעלה –
פונקציית AddTwoNumbers
. |
|
|
|
הפונקציה שניצור השביל להעלים
אובייקט מסויים היא : |
|
Function hide(obj){ |
|
[obj]._alpha=0; |
|
} |
|
במקרה הזה יצרנו פונקציה ,
הכנסנו לתוכה את שם האובייקט שאנחנו רוצים להעלים והשתמשנו בשם הזה בשביל לבצע
את הקוד הפנימי של הפונקציה . |
|
השימוש בפונקציה לצורך העלמת movieclip – "a” יהיה : |
|
Hide(a); |
|
|
|
בואו נשפר קצת את הפונקציה הזאת
. נניח שאנחנו לא רוצים להעלים את האובייקט לגמרי , אלא רק לתת לו ערך של שקיפות
– נוסיף את הערך לפרמטרים המתקבלים ונשתמש בו בתוך הפונקציה , הפונקציה המשופרת
תהיה : |
|
Function hide(obj,num){ |
|
_root[obj]._alpha=num; |
|
} |
|
כאן אנחנו משתמשים בערך num כערך של השקיפות של
האובייקט . |
|
השימוש בפונקציה לצורך יצירת
שקיפות 50 לקליפ b
יהיה : |
|
Hide(b,50); |
|
|
|
|
יצירת פונקציות שמחזירות ערכים (fnc3.fla)
|
|
|
|
ניתן להשתמש בפונקציות של מנת
להחזיר ערך למשתנה מסויים , ראו דוגמה AddTwoNumbers למעלה . דוגמאות טובות
לפונקציות שמחזירות ערכים , הם כל הפונקציות המתמטיות – Math.abs(num) מחזיר את הערך המוחלט
של מספר , Math.sine(num);
מחזיר ערך סינוס של המספר וכו' . |
|
צורת הכתיבה של פונקציות
שמחזירות ערכים היא : |
|
Function myfunctions(x){ |
|
//do something with x |
|
return somevalue; |
|
} |
|
והקריאה לפונקציה מתבצעת תמיד
בצורה הבאה: |
|
Somevar =
myfunction(somevalue); |
|
אם ניקח דוגמא מפונקציות קיימות
: |
|
X= -50; |
|
Y= Math.abs(x); |
|
//y= 50; |
|
|
|
לדוגמא , ניצור פונקציה שלוקחת
סכום בדולרים והופכת אותו לערך בשקלים : |
|
|
|
Function
ConvertToShekel(sum){ |
|
Exchange=4.31; |
|
Return sum*Exchange; |
|
} |
|
הפונקצייה מקבלת ערך מסויים
ומכפילה אותו בנתון קבוע (פחות או יותר ...) ומחזירה את הערך הסופי , השימוש
בפונקציה לבדיקה כמה שווים 20 דולר ,יתבצע בצורה הבאה : |
|
|
|
Valueof20dolar=ConvertToShekel(20); |
|
// Valueof20dolar=86.2; |
|
|
פונקציות כפעולות של movie clip(fnc4.fla)
|
|
|
|
|
|
ניתן גם לבנות פונקציות שמשפיעות
על movie clip
. השיטה לבניית הפונקציה זהה לזו שיצרנו עד עכשיו . הדבר השונה הוא שהפונקציות
יהיו בתוך ה-timeline
של ה-movieclip
ונקרא להם רק דרך ה-movie clip
. |
|
|
|
לדוגמא : |
|
אם נרצה שלחיצה על כפתור תגדיל movie clip ב- 10 אחוז בכל לחיצה
, ניתן לכתוב את הפונקציה הבאה בתוך הפריים הראשון של ה-timeline של ה-movieclip . |
|
|
|
Function increase(){ |
|
_xscale+=10; |
|
_yscale+=10; |
|
} |
|
על מנת להפעיל את הפונקציה הזאת
ניצור כפתור על ה-timeline
הראשי שהפקודה שלו תהיה : |
|
On(release){ |
|
mc.increase(); |
|
} |
|
|
|
כמובן שאם רוצים ניתן לשפר את
הפונקציה כך שתוכל להכיל גם בכמה אחוזים להגדיל או להקטין את האובייקט : |
|
Function increase(num){ |
|
_xscale+=num; |
|
_yscale+=num; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|