
20-11-2008, 22:14
|
 |
מנהל פורום פלאש
|
|
חבר מתאריך: 04.03.05
הודעות: 5,834
|
|
כי חישבת את כל המרחק בפריים אחד על ידי שימוש בלולאת ה FOR.
הפונקציה צריכה להיראות ככה:
קוד:
function run() {
if (_root.a._y <= _root.line._y;t++) _root.a._y = y0 + (10*t^2)/2;
}
ובמקום לקרוא לה פעם אחת על ידי שימוש ב setTimeout תצטרך לקרוא לה באופן קבוע על ידי setInterval, אותו תוכל להסיר ברגע שהגוף יגיע לקו.
מה שיראה בסגנון הזה:
קוד:
var myInt:Number = setInterval(run, 1000)
למרות שאני ממליץ להוריד את התדירות למספר יותר קטן.
כשהכדור מגיע לקו תוכל להסיר את האינטרבל באופן הבא:
קוד:
function run() {
if (_root.a._y <= _root.line._y;t++) _root.a._y = y0 + (10*t^2)/2
else clearInterval(myInt)
}
יש עוד כמה טעויות קטנות שאני מתפלא שלא מקפיצות לך בעיה, למשל הגדרת משתנה ככה:
קוד:
var y0 = _root.a._y;
וזה לא סינטקס תקין, אמורים להגדיר ככה:
קוד:
var y0:Number = _root.a._y;
סוג המשתנה צריך לבוא אחרי השם.
דבר שני ראיתי שהגדרת את המשתנה y0, שמכיל בעצם את ה y של המוביקליפ a, זה לא נחוץ דבר ראשון כי יכלת פשוט כאן להעתיק את זה כמו שהוא, במקום:
קוד:
_root.a._y = y0 + (10*t^2)/2;
לכתוב ככה:
_
קוד:
root.a._y = _root.a._y + (10*t^2)/2;
מה שמביא אותנו לעוד דבר שבמקום:
ניתן לכתוב:
מה שאומר שהשורה יכולה להכתב באופן הבא:
קוד:
_root.a._y += (10*t^2)/2;
|