25-07-2005, 17:52
|
|
|
|
חבר מתאריך: 10.10.04
הודעות: 2,319
|
|
אמממ
לא נראה לי שהבנת את for.
זה לא סתם סידרה של אותיות ומספרים, יש היגיון מאחורי זה. ואני הולך להסביר לך אותו אם תרצה או לא
אוקי, הנה תבנית בסיסית של for
קוד:
for(init; condition; next) {
statement(s);
}
המילה הראשונה (init) מייצגת את אתחול המשתנה (כלומר הגדרת המשתנה).
בדרך כלל משתמשים במשתנה בעל אות אחת כדי לא "להכביד" על הפקודה ועלמנת להקל על הקריאה.
המילה השניה (condition) מיצגת את את התנאי שלפיו תפעל הלולאה.
תנאי הלולאה שונה במקצת מתנאי מסוג if, מכיוון שתנאי מסוג זה מתאפין בעצם בצורת ההתניה הבאה :
ואילו תנאי הלולאה מתבצע בצורה כזאת :
ציטוט:
כל עוד התנאי הזה מתבצע, פעל כך
|
*קצת קשה להבין את זה לפני שממש משתמשים זה.
המילה האחרונה (next) מיצגת את גודל או צורת ההתקדמות של המשתנה.
כלומר בכל פעם שהלולאה מסיימת את הפעולה שבתוך הסוגריים המסולסלים היוא עוברת לקידום המשתנה(ראה תמונה)
צורת הפעולה של לולאה מוזרה ושונה.
הנה ,תמונה שתסביר לך את:
- תחילה מתבצעת בדיקת הגדרת המשתנה, הבדיקה מתבצעת פעם אחת בלבד.
- לאחר מכן נבדק התנאי, כל עוד התנאי מתבצע הלולאה תמשיך.
- אם התנאי אכן מתבצע (כלומר, נכון) הלולאה תבצע את הפעולה שנמצאת בסוגריים המסוסלים.(במקרה שלנו טרייס ל i, התוצאה כמובן תהיה: 1)
- כאשר הלולאה סיימה את הפעולה היא תעבור לקידם המשתנה, במקרה שלנו קידום באחד.
- לאחר מכן בחזרה לתנאי, אם הוא עדיין מתבצע הלולאה תמשיך ותכנס שוב לסוגריים המסולסלים. וכך עד שהתנאי יהיה שגוי, כלומר i יהיה גדול מ 10.
אני חושב שאתה יכול לנחש מה יקרה כשאר תפעיל את הלולאה הנ"ל. נכון תקבל בתיבת הoutput
דבר כזה :
קוד:
1
2
3
4
5
6
7
8
9
10
בוא נעבור לבעיה הספציפית שלך.
מה שאתה צריך לעשות זה פשוט לחבר את המספר המתקבל מהמשתנה i עם שם הMC (במקרה שלך wall)
אז הקוד שלך בעצם כמעט נכון, הבעיה היא בהתניה.
קוד:
for (h=0; h<=4; h++) {
if (_root.bong.hitTest(_root["wall"+h]))
_root.gotoAndPlay(1);
}
עכשיו, אתה תקבל בדיקת hitTest מקיר בשם wall0 עד קיר בשם wall4.
מקווה שהבנת
בהצלחה
יוחאי.
_____________________________________
BugY
Animation & ActionScriptin
נערך לאחרונה ע"י BugY בתאריך 25-07-2005 בשעה 18:00.
|