21-01-2005, 12:27
|
|
|
חבר מתאריך: 30.04.04
הודעות: 310
|
|
מה לעזאזל? בעיה ב-Script מאוד בסיסי.
זה Script מאוד בסיסי שבעבר הצלחתי לעשות אותו בעבר, אבל במקום לעבוד כשורה הוא מבצע דברים מוזרים. הוא קצת "מפורט" מידי כי חשבתי שאולי פיספסתי משהו בקוד הראשוני.
בכל מקרה, הסבר קצר. יש לי את העכבר, ויש לי MC בשם "creature" . היצור עוקב אחרי העכבר (ובו זמנית מבצע אנימציית הליכה - פריים 2 עד פריים 20) וכמובן מתהפך אם הכיוון תנועה שלו משתנה. במידה והיצור מגיע ל-X של העכבר, הוא נעצר ומתחיל לבצע אנימציה (פריים 21 של היצור).
הסקריפט בעצם יוצר את התזוזה לכיוון הרצוי וגם בודק מתי מבתצע שינוי סטטוס על מנת לשנות אנימציה/כיוון, כאשר יש 3 מצבים: עצירה, ימין ושמאל.
הכיוון ההתחלתי הוא שמאלה, והיצור עוקב אחרי העכבר כראוי. אבל כשאני משנה כיוון ימינה, הוא מתחיל להתשגע ולהתהפך (כלומר מבצע את הפעולה מבלי להתחשב בתנאי שהצבתי). אותו דבר קורה לי עם העצירה. הוא פשוט תקוע על פריים 21 (ומשתמע מזה שהוא חוזר על הפעולה מבלי להתחשב בתנאי). בדקתי את הקוד, עבדתי עם Traces ולא הצלחתי למצוא את התקלה.
XM = _xmouse;
X = getProperty("creature", _x);
DIR = "LEFT";
if ((XM<=X+2) && (XM>=X-2)) {
ADIR = "STOP";
} else {
if (XM>X) {
setProperty("creature", _x, X+2);
ADIR = "RIGHT";
} else {
setProperty("creature", _x, X-2);
ADIR = "LEFT";
}
}
if (ADIR == DIR) {
ADIR = DIR;
} else {
if (((DIR == "LEFT") || (DIR == "RIGHT")) && (ADIR == "STOP")) {
creature.gotoAndPlay(21);
} else {
if (((DIR == "STOP") || (DIR == "LEFT")) && (ADIR == "RIGHT")) {
setProperty("creature", _xscale, -getProperty("creature", _xscale));
creature.gotoAndPlay(2);
} else {
if (((DIR == "STOP") || (DIR == "RIGHT")) && (ADIR == "LEFT")) {
setProperty("creature", _xscale, -getProperty("creature", _xscale));
creature.gotoAndPlay(2);
}
}
}
}
DIR = ADIR;
שוב, אני יודע שאפשר לפשט את הסקריפט, אבל אותה בעיה קרתה לי בדיוק כשהסקריפט היה מופשט, ולכן ניסיתי להרחיב אותו כדי שיהיו לי יותר אפשרויות לבדיקת מקור הבעיה - לא הצלחתי :\
אשמח לעזרה ולהכפשות של "וואי איזו טעות בסיסית" - אני פשוט לא מוצא אותה! ENLIGHT ME!
|