לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #4  
ישן 11-06-2006, 18:49
צלמית המשתמש של dragoon
  משתמש זכר dragoon dragoon אינו מחובר  
 
חבר מתאריך: 14.01.06
הודעות: 7,485
בתגובה להודעה מספר 3 שנכתבה על ידי adir01 שמתחילה ב "לא כל כך הבנתי.."

"הכנס את הקוד של היריה" שם אתה מכניס את הקוד שאתה רוצה שזה ירה.
בעיקרון הקוד הולך ככה:
קודם כל, אתה צריך להדביק את המוביקליפ של כדור מהספריה, עושים את זה בעזרת attachMovie:






קוד:
_root.attachMovie("shotMC","shot"+count,_root.getNextHighestDepth());









מה שהלך כאן זה בעצם זה:
אתה מדביק את היריה לבמה. הלינקאג' של היריה בספריה הוא shotMC.
*לינקאג' הוא בעצם כמו שם מזהה למוביקליפ בשביל לזמן אותו מהסיפריה. בשביל לקבוע לינקאג' למוביקליפ, אתה פותח את הספריה: window>library, מקליק עם מקש ימיני על המוביקליפ של הכדור, בוחר בlinkage לוחץ על הcheckbox שכתוב ליד: export for action script only, ואז בתיבת הטקסט העליונה אתה רושם shotMC. כך נתת למוביקליפ שלך לינקאג'.
אחרי הפסיק, אתה נותן למוביקליפ החדש שהדבקת על הבמה שם חדש: המילה shot בחיבור משתנה מיוחד שתצטרך לאתחל ולהגדיל כל פעם שאתה יורה, בגלל שאנחנו רוצים שלכל יריה יהיה שם משלה.
*בשביל לעשות זאת, לפני שורת הקוד הזאת:






קוד:
onClipEvent(enterFrame){









אתה כותב את זה:






קוד:
onClipEvent(load){ var count:Number=0; }









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






קוד:
count++;









החלק הבא של השורה הראשונה שאני כתבתי: root.getNextHighestDepth_, בעצם מחפש את העומק הבא הריק על הבמה בשביל שהמוביקליפ יתפוס אותו.
*עומק: תאר לעצמך שלכל מוביקליפ הנוצר בסרטון יש שכבה מיוחדת, והשכבה הזאת בעצם יכולה להחזיק מוביקליפ אחד. זאת אומרת שאם לאותה הכבה תדביק כמה מוביקליפים, אז כולם חוץ מהאחרון ימחקו.
אם בתוך מוביקליפ יש לך עוד מוביקלים, אז למוביקליפ החיצוני יש שכבות משל עצמו, והוא לא קשור לבמה הראשית, זאת אומרת שנגיד בבמה הראשית יש לך 5 מוביקליפים, אז העומק הריק הבא הוא 6. אבל אם במוביקליפ אחד מהם יש לך נגיד 2 מוביקליפים אז השכבה הריקה הבאה היא 3, משמע המוביקליפים על הבמה לא משפיעים על מוביקליפים בתוך מוביקליפים.

מסיבה זו אני מציע לך לעשות מוביקליפ מיוחד בשביל יריות. בצורה הבאה:






קוד:
_root.createEmptyMovieClip("shots",_root.getNextHighestDepth());









מה שאתה עושה זה בעצם ליצור מוביקליפ חדש על הבמה בשם shots, ולתפוס איתו את הערך הריק הבא שיש.
*את הקוד הזה אתה רושם מתחת לשורה שנתתי לך שמאתחלת לך את את המונה של היריות.

בשביל להדביק את היריות למוביקליפ החדש שיצרת, ולא לבמה, אתה משנה את השורה הראשונה שנתתי לך כך:






קוד:
_root.shots.attachMovie("shotMC","shot"+count,_root.shots.getNextHighestDepth);









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






קוד:
_root.shots["shot"+count]._x=_root.char._x; _root.shots["shot"+count]._y=_root.char._y;









בהנחה שהinstance name של השחקן הוא char.
*את הקוד הזה אתה שם מתחת לשורה הראשונה שכתבתי לך(שמדביקה את המוביקליפ מהספריה).

אני מניח שתרצה שהמוביקליפ יהיה בזוית של השחקן:






קוד:
_root.shots["shot"+count]._rotation=_root.char._rotation;









*את השורה הזאת אתה שם אחרי 2 השורות האחרונות.

בשביל לקדם את הכדור בכל פריים, אתה כותב את זה:






קוד:
for(var i:Number=0;i<=count;i++){ _root.shots["shot"+i]._y -= Math.cos(_root.shots["shot"+i]._rotation*(Math.PI/180)); _root.shots["shot"+i]._x += Math.sin(_root.shots["shot"+i]._rotation*(Math.PI/180)); }









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

הקוד הסופי אמור להראות כך:






קוד:
onClipEvent(load){ _root.createEmptyMovieClip("shots",_root.getNextHighestDepth()); var count:Number=0; } onClipEvent(enterFrame){ count++; _root.shots.attachMovie("shotMC","shot"+count,_root.shots.getNextHighestDepth()); root.shots["shot"+count]._x=_root.char._x; _root.shots["shot"+count]._y=_root.char._y; _root.shots["shot"+count]._rotation=_root.char._rotation; for(var i:Number=0;i<=count;i++){ _root.shots["shot"+i]._y -= Math.cos(_root.shots["shot"+i]._rotation*(Math.PI/180)); _root.shots["shot"+i]._x += Math.sin(_root.shots["shot"+i]._rotation*(Math.PI/180)); } }



*שים לב שאתה הקוד הזה אתה צריך לתת למוביקליפ char(השחקן)
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


נערך לאחרונה ע"י dragoon בתאריך 11-06-2006 בשעה 18:52.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 11-06-2006, 20:14
  -FoxyBrain- -FoxyBrain- אינו מחובר  
 
חבר מתאריך: 03.09.05
הודעות: 2,857
סליחה, אין כוונה לפרגוע מאחורי זה. באמת כל הכבוד על ההשקעה
בתגובה להודעה מספר 8 שנכתבה על ידי dragoon שמתחילה ב "|כועס-מאוד לא הדבר הכי נחמד..."

תמיד כדאי לתחקר ובכלל, לראות אם האדם שמבקש את העזרה רציני ושווה את ההשקעה (מה שלא נראה כרגע )

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 02:23

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר