
15-04-2009, 17:36
|
|
|
|
חבר מתאריך: 14.06.05
הודעות: 34
|
|
|
לא הבנתי לגמרי
קודם כל, תודה על העזרה.
דבר שני, אני מניח שהאינטרוול שאתה מדבר עליו הוא המתודה שדואגת לבצע את התזוזה, הירייה וכו', ובמקרה הנ"ל מדובר על אירוע enterFrame.
ידוע לי כי הפעולה גונבת משאבי מערכת רבים, אך בכל מחלקה יש צורך לבצע מספר פעולות, ואיחודן הוא הרבה פעמים לא ריאלי. השחקן מבצע בפעולת ה-enterFrame שלו בדיקה של הקלט שהתקבל שהתקבל (שכולל סינון של קלט הליכה, ירייה, החלפת דמות ועוד מספר פעולות), ואילו המפלצות למשל ממשמות לוגיקה שונה לחלוטין. מכיוון והכל כתוב ב-OOP (מן הסתם) כדי לאפשר דינאמיות כמה שיותר גבוהה בקוד (הכל גם נטען מקבצי קונפיגורציה XML-ים נפרדים), איחוד המתודות איננו ריאלי כ"כ.
פתרון אפשרי שמצאתי בפורומים בחו"ל הוא ליצור State-Machine ע"י יצירת מחלקה תואמת, שבכל enterFrame תקפיץ Event, ומכאן כל המתודות שמשתמשות ב-enterFrame יאזינו לאירוע שמקפיצה המחלקה המדוברת, במקום להאזין ל-enterFrame עצמו. כאשר יידרש המשחק להעצר, המחלקה תפסיק את הקפצת ה-Event בעת enterFrame וכך יושפע כל המשחק מהשינוי.
רק חבל שכל שאינטרוולים שמושפעים מטיימרים יצטרכו תנאים אישיים משלהם... :-/
אולי אני אעלה על פתרון גם להם ביצירת המחלקה. אולי מימוש אישי לטיימר שבעת עצירת המשחק ידע לעשות לעצמו Stop, ובעת חידוש לבצע Start מחדש.
מה דעתך?
יש הצעות טובות יותר?
|