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

שימוש ב- Hit Test method בפלאש 5

 

שיעור זה יסביר בקצרה כיצד להשתמש במתודת ה- hit test בפלאש 5 על מנת לזהות מגע בין שני מובי קליפים.האופציה חשובה ושימושית כאשר באים ליצור מנגנון של גרירה וזריקה

(drag and drop) או כאשר רוצים לזהות התנגשות בין סימבולים (Collision ditection).מרכיב חיוני ובסיסי ביצירת משחקים וממשקים מורכבים בפלאש.השיטה שתפורט כאן מתאפשרת רק בפלאש 5.

 

1.דבר ראשון ניצור את שני המובי קליפים שאנחנו רוצים ליצור בינם את המפגש.המובי קליפ הראשון יהיה ה"מטרה" שעליו נשליך את המובי קליפ הנגרר.

 

2.בדוגמא המתוארת המלבן הכחול הוא המטרה והעיגול הוא האובייקט הנגרר.

 

3.לאחר שהגדרנו כל אחד כסימבול מובי קליפ על ידי f8 עלינו לתת לכל אחד מהם instance name.

 

***הערה:Instance name זהו שם שאנו מצמידים למובי קליפ כדי שנוכל להתייחס ולפנות אליו באקשן סקריפט.כדי לתת למובי קליפ Instance name  יש לבחור אותו ולהגדיר את השם דרך ה-

instance panel.

 

המלבן יקבל את ה-Instance name --> target והעיגול הנגרר יקרא drag.

 

4.כדי שנוכל לגרור את העיגול ולשחרר את הגרירה עלינו ליצור בתוכו כפתור שיזהה את הלחיצה והשחרור של העכבר.בדוגמא המתוארת אפשר להכנס אל במת העריכה של העיגול הנגרר,לסמן את כל העיגול ולהגדיר אותו מחדש כסימבול כפתור על ידי F8  ואז למעשה יש לנו כפתור בתוך מובי קליפ.

 

***הערה:אפשר יהיה לשאול מדוע לא להתחיל מראש עם כפתור? מדוע צריך כפתור בתוך מובי קליפ? ובכן,התשובה היא בגלל ה- Instance name.

Instance name ניתן להצמיד אך ורק לסימבול מסוג מובי קליפ וכדי לבצע גרירה מורכבת חייבים להשתמש בכפתור, אז משלבים בין השניים.הכפתור מעניק את יכולת הגרירה והמובי קליפ את ה-

Instance name.

 

5.כעת יש לנו על הבמה שני מובי קליפים אשר אחד מהם מכיל בתוכו כפתור.את הפקודות שמאפשרות את הגרירה ויזהו את ההנחה או המגע בין שני המובי קליפים ניתן בכפתור.

 

6.כדי לתת את פקודות האקשן סקריפט בכפתור עלינו להכנס לבמת העריכה של המובי קליפ אשר בתוכו הוא נמצא על ידי לחיצה על המובי קליפ בספריה.

 

7.כעת נסמן את הכפתור ונפתח את חלון האקשנים על ידי לחיצה על מקש ימני.

 

8.הפקודות שנכתוב בתוך הכפתור יהיו:

on (press) {

    startDrag ("", true);

}

on (release) {

    stopDrag ();

    if (this.hittest(_root.target)) {

        setProperty ("_root.target", _alpha, "50");

    }

}

 

וכעת ההסבר לגבי תפקידה של כל אחת:

on (press) {

    startDrag ("", true);

}

 

זאת הפקודה הראשונה שאומרת שבלחיצה על העכבר המובי קליפ יתחיל להגרר.כלומר,כל עוד מקש העכבר לחוץ המובי קליפ יגרר ויצמד למרכז הסמן כי סימנו את אופציית lock mouse to center.

 

9.בשלב הזה לא מתבצע שום חישוב או בדיקה.המובי קליפ פשוט נגרר.החלק השני של הפקודה מתייחס למה קורה ברגע שחרור העכבר.

דבר ראשון תפסק בגרירה:

on (release) {

    stopDrag ();

 

10.לאחר שחרור הגרירה הפלאש שואל שאלה מאוד פשוטה:"האם המובי קליפ שוחרר בגבולות המובי קליפ השני?" כלומר,האם נוצר מגע כלשהו בין שני המובי קליפים לאחר השחרור.

הבסיס לשאלה הזאת היא פקודת ה- Hit Test שעליה נסוב כל השיעור.הפקודה כוללת התניית

If  בסיסית בצירוף ה- Instance name שמולו אנחנו רוצים לבצע את הבדיקה.

 

if (this.hittest(_root.target))

 

this  הוא המובי קליפ שבתוכו נמצאת הפקודה (המובי קליפ הנגרר).האם ה- Hit Test שלו שווה למובי קליפ המטרה?

this.hittest(_root.target)

 

***הערה: הקידומת _root. לפני Instance name בפלאש 5 היא לשם ציון נתיב אבסולוטי מכל מקום בסרט.מה שהיה מוכר בפלאש 4 בתור קו נטוי רק יותר מתקדם ועם יותר אפשרויות.

 

11.אם התשובה לשאלה הזאת היא חיובית אנחנו מגדירים התרחשות.בדוגמא הזאת בחרתי להפוך את מובי קליפ המטרה לחמישים אחוז שקיפות במקרה של מגע.אם התנאי (השאלה) לא יתקיים אז לא יקרה כלום.

setProperty ("_root.target", _alpha, "50")

 

 

 

בהצלחה,

 

מקמרפי