שאלה דחופה תענו מהר!!!

s a g s a g

New member
תודה...

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

Galle

New member
אפשר לעזור? (שוב אני..)

תראה.. אני ינסה להסביר לך כאן את הבעיה בתכנית שלך: מה שקורה: -כשלוחצים על "למעלה" המוביקליפ מופעל מפריים 2. אז לוחצים למעלה וזה מפעיל את פריים 2. שוב לוחצים למעלה, אז הוא לא יכול להמשיך את המוביקליפ כי הוא צריך שוב לחזור לפריים 2,.. ושוב.. ושוב.. רק פריים 2! לכן, אנחנו צריכים בעצם לעשות דבר כזה: רק בלחיצה "למעלה" הראשונה, הוא יילך לפריים 2. ואז, בתוך המוביקליפ נוסיף בהתחלה ובאמצע פריימים ובם נוסיף את הקוד שאומר: עצור! אם לחצן "למעלה" לחוץ אז המשך! וכך, הלחיצה הראשונה על "למעלה" תפעיל את פריים 2 במוביקליפ והמוביקליפ ימשיך לרוץ... עכשיו,זה לא שהוא ממשיך בגלל הלחיצה על "למעלה", אלא, שהוא לא עוצר בגלל שיש לחיצה על "למעלה" - שים לב להבדל בניסוחים - בפקודות. כדי לבצע זאת, נוסיף משתנה קטן ונחמד לפריים הראשי: FirstUp. במקום התנאי שרשמת:
if (Key.isDown(Key.RIGHT)){​
נוסיף דבר כזה:
if ((Key.isDown(Key.RIGHT)) && (!FirstUp)){ FirstUp=true; המשך הקוד.. }​
( ! = הפוך , not ) ברגע שערכו של המשתנה FirstUp יהיה true (ואז התנאי הנ"ל לא יתבצע), המוביקליפ אמנם ימשיך להתקדם אבל לא בזכות התנאי הזה, אלא מתוך הקוד בתוך הפריימים (ההסבר נמצא למעלה) שאומר - לעצור! , אם יש לחיצה "למעלה" אז - המשך! כמובן, שברגע שאני אלחץ "למטה" אז אני צריך להחזיר את המשתנה FirstUp ל-False כדי שבלחיצה הבאה על למעלה, הוא יחזור לפריים 2. *בסופו של דבר, בהנחה שתשתמש ב-4 הכיוונים, יהיו לך 4 משתנים חדשים: FirstUp, FirstDown, FirstLeft, FirstRight .. מקווה שהבנת..
 

Galle

New member
FirstUp = FirstRight .. פשוט לא ..

שמתי לב שהתחלת מ- Right .. ואיפה שרשום: "למעלה" אז כמובן שאני מדבר על "ימין"..
 

choice

New member
האם ניסית את מה שכתבת?

כי מהנסיון שלי יש דברים שלפחות כרגע בצורה הזו לא ממש עובדים טוב ולא מקיפים את כל המצבים האפשריים. אולי לא הבנתי אותך מספיק טוב. בינתיים לקחתי את מה שכתבת והמשכתי עם זה הלאה. בפריים הראשון בסרטון הכללי רשמתי את הקוד הבא:
stop(); FirstUp = false; function MoveMan() { if ((Key.isDown(Key.RIGHT)) && (!FirstUp)) { FirstUp = true; _root.man._x++; _root.man.gotoAndPlay(1); } else if (Key.isDown(Key.RIGHT)) { _root.man._x++; } else if (!(Key.isDown(Key.RIGHT))) { FirstUp = false; } } setInterval(MoveMan, 1);​
ובתוך הMovieClip של האיש, החלפתי את הקוד stop(); בקוד:
if (!(Key.isDown(Key.RIGHT))) { stop(); }​
מודה שעבודה ותכנות בפלאש קצת חדשים לי לעומת תוכנות אחרות, אז אני בטוחה שיש דרכים יותר חכמות ונכונות לעשות דברים. כרגע לא ממש הבנתי איך עושים שהקוד בMovieClip ימשך לאורך כל הפריימים, אז בינתיים למשל בשביל לגרום לאיש לעצור בערך מידית כשמפסיקים ללחוץ על המקש ימינה, פשוט הוספתי את אותו סקריפט גם לפריימים 10, 20, ו-30. תבדוק את הדברים שנכתבו לך בינתיים ותראה מה עובד, מה לא.. ואיך אתה רוצה להמשיך הלאה. מניחה שהדברים עוד ישתנו כאשר תוסיף עוד מקשים או אופציות. ולגבי הסבר לתכנות, אני אוסיף עוד מעט.
 
למעלה