17-10-2005, 09:49
|
|
|
חבר מתאריך: 03.09.05
הודעות: 2,857
|
|
אוקיי, צריך להסביר את זה מתישהו :)
attachMovie היא פקודה המאפשרת לך למשוך MovieClips מהסיפרייה בזמן ריצה.
למה להשתמש בattach במקום בdup?
במקרים מסויימים, attach יותר נוחה מהפקודה duplicateMovieClips מפני שהיא מושכת את
המוביקליפים ישירות מהסיפריה, בניגוד ל dup שדורשת שיהיה מוביקליפ אחד על הבמה.
קודם כל, זה מונע את הבעיה שישנה ב dup כאשר אתה מנסה "לשלוט" על המוביקליפ הראשוני, לדוגמה:
קוד:
for(var i:Number=0; i<=10; i++)
{
duplicateMovieClip(myMC,"mc"+i,i);
_root["mc"+i]._x=i*10
_root["mc"+i].onEnterFrame=function()
{
this._x+=5
}
}
מה שיקרה כאן זה שישתכפלו 10 מוביקליפים ויזוזו ימינה אך המוביקליפ הראשוני ישאר במקומו ופה בעצם החיסרון (בדרך כלל... לפעמים זה יכול להיות יתרון)
כמובן שאפשר לסדר את זה כך שיהיה ניתן לשלוט גם בו או פשוט לשים אותו באזור בלתי נראה, אך פשוט עדיף להשתמש ב attach
עוד חיסרון של dup זה שדי קשה להכניס את המוביקליפים המשתכפלים אלתוך מוביקליפ-מכיל (או container בלעז ) , מאותה סיבה בדיוק שקשה לשלוט על המוביקליפ הראשוני, דבר שהוא מאוד חשוב כמשכפלים מוביקליפים מפני שכך העומקים לא יכולו לדרוס עומקים של מוביקליפים קיימים על הבמה או יעלו מעליהם, מה גם שקל יותר לשלוט בכל המוביקליפים שהשתכפלו יחד.
attachMovie - הסבר
התבנית הבסיסית
קוד:
attachMovie(id:String, name:String, depth:Number, [initObject:Object]) : MovieClip
id = שם המוביקליפ, שאותו אתה רוצה למשוך, בסיפרייה - linkage
name = שם המוביקליפ החדש
depth = עומק המוביקליפ
initObject = אתחול מיקום המוביקליפ
כפי שאתה רואה, התבנית די דומה לתבנית של dup אפשר אפילו לומר זהה.
דוגמה לשימוש ב attachMovie :
קוד:
var mcClip:MovieClip = this.createEmptyMovieClip("mcClip",this.getNextHighestDepth());
for(var i:Number=0; i<=10; i++)
{
mcClip.attachMovie("myMC","mc"+i,i,{_x:i*10,_y:Stage.height/2});
mcClip.onEnterFrame=function()
{
this._x+=5
}
}
מה שעשיתי פה זה יצירתי מוביקליפ ריק (conatainer) ושמרתי את הרפרנס שלו בתוך משתנה בשם mcClip.
לאחר מכן הרצתי לולאה הפועלת 10 פעמים והשתמשתי במשתנה המתקדם שלה בתור שם המוביקליפ ועומקו מפני שלא יכולים להיות כמה מוביקליפים עם אותו שם ו\או עם אותו העומק.
לכל מוביקלים משתכפל הוספתי פונקציית enterframe אשר מקדמת את האיקס שלו ב 5 בכל פעם.
זהו, אני חושב שזה היה די ברור
לאחר מכן יצרתי לולאה
_____________________________________
|