לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 28-07-2005, 14:29
צלמית המשתמש של ``DarkLight``
  ``DarkLight`` ``DarkLight`` אינו מחובר  
 
חבר מתאריך: 23.12.04
הודעות: 1,131
שלח הודעה דרך ICQ אל ``DarkLight`` שלח הודעה דרך MSN אל ``DarkLight``
אין חוצפה למחשב?! יותר מידי פקודות בAS?

כן, במשחק שאני מכין בניתי פונקציה יפה ובדקתי שהכול נכון, והכול אמור לפעול, אבל כאשר אני מפעיל את המשחק, הוא עושה כמה פעולות "רצויות" מה שהקוד אמור לעשות, ואחרי שניה או שתיים הוא מראה לי בOutput את ההודעה הבאה:
ציטוט:

256 levels of recursion were exceeded in one action list.
This is probably an infinite loop.
Further execution of actions has been disabled in this movie.


למתעניין להלן הפונק':

קוד:
var nInterval:Number; nDir = random(4); moveMonster(); function moveMonster() { if (nDir == 0) { monster.gotoAndPlay("darom"); if (!monster.hitTest(mcdarom20) && !monster.hitTest(mcdarom21) && !monster.hitTest(mcdarom) && !monster.hitTest(mcdarom2) && !monster.hitTest(mcdarom3) && !monster.hitTest(mcdarom4) && !monster.hitTest(mcdarom5) && !monster.hitTest(mcdarom6) && !monster.hitTest(mcdarom7) && !monster.hitTest(mcdarom8) && !monster.hitTest(mch) && !monster.hitTest(mch2) && !monster.hitTest(mch3) && !monster.hitTest(mch4) && !monster.hitTest(mch5) && !monster.hitTest(mch6) && !monster.hitTest(mch7) && !monster.hitTest(mch8) && !monster.hitTest(mch9) && !monster.hitTest(mch10) && !monster.hitTest(mch11) && !monster.hitTest(mch12) && !monster.hitTest(mch13) && !monster.hitTest(mch14) && !monster.hitTest(mch15) && !monster.hitTest(mch16) && !monster.hitTest(mch17) && !monster.hitTest(mch18) && !monster.hitTest(mch30)) { monster._y += 3; nIntervalMonster = setInterval(moveMonster, (1/24)*1000); } else { nDir = random(4); moveMonster(); } } else { if (nDir == 1) { monster.gotoAndPlay("darom"); if (!monster.hitTest(mczafon) && !monster.hitTest(mczafon2) && !monster.hitTest(mczafon3) && !monster.hitTest(mczafon4) && !monster.hitTest(mczafon5) && !monster.hitTest(mczafon6) && !monster.hitTest(mczafon7) && !monster.hitTest(mczafon8) && !monster.hitTest(mczafon9) && !monster.hitTest(mczafon10) && !monster.hitTest(mch) && !monster.hitTest(mch2) && !monster.hitTest(mch3) && !monster.hitTest(mch4) && !monster.hitTest(mch5) && !monster.hitTest(mch6) && !monster.hitTest(mch7) && !monster.hitTest(mch8) && !monster.hitTest(mch9) && !monster.hitTest(mch10) && !monster.hitTest(mch11) && !monster.hitTest(mch12) && !monster.hitTest(mch13) && !monster.hitTest(mch14) && !monster.hitTest(mch15) && !monster.hitTest(mch16) && !monster.hitTest(mch17) && !monster.hitTest(mch18) && !monster.hitTest(mch30)) { monster._y -= 3; nIntervalMonster = setInterval(moveMonster, (1/24)*1000); } else { nDir = random(4); moveMonster(); } } else { if (nDir == 2) { monster.gotoAndPlay("maarav"); if (!monster.hitTest(mcmaarav) && !monster.hitTest(mcmaarav2) && !monster.hitTest(mcmaarav3) && !monster.hitTest(mcmaarav4) && !monster.hitTest(mcmaarav5) && !monster.hitTest(mcmaarav6) && !monster.hitTest(mcmaarav7) && !monster.hitTest(mcv) && !monster.hitTest(mcv2) && !monster.hitTest(mcv3) && !monster.hitTest(mcv4) && !monster.hitTest(mcv5) && !monster.hitTest(mcv6) && !monster.hitTest(mcv7) && !monster.hitTest(mcv8) && !monster.hitTest(mcv9) && !monster.hitTest(mcv10) && !monster.hitTest(mcv11) && !monster.hitTest(mcv12) && !monster.hitTest(mcv13) && !monster.hitTest(mcv14)) { monster._x -= 3; nIntervalMonster = setInterval(moveMonster, (1/24)*1000); } else { nDir = random(4); moveMonster(); } } else { if (nDir == 3) { monster.gotoAndPlay("mizraj"); if (!monster.hitTest(mcmizraj1) && !monster.hitTest(mcmizraj2) && !monster.hitTest(mcmizraj3) && !monster.hitTest(mcmizraj4) && !monster.hitTest(mcmizraj5) && !monster.hitTest(mcmizraj6) && !monster.hitTest(mcmizraj7) && !monster.hitTest(mcv) && !monster.hitTest(mcv2) && !monster.hitTest(mcv3) && !monster.hitTest(mcv4) && !monster.hitTest(mcv5) && !monster.hitTest(mcv6) && !monster.hitTest(mcv7) && !monster.hitTest(mcv8) && !monster.hitTest(mcv9) && !monster.hitTest(mcv10) && !monster.hitTest(mcv11) && !monster.hitTest(mcv12) && !monster.hitTest(mcv13) && !monster.hitTest(mcv14)) { monster._x += 3; nIntervalMonster = setInterval(moveMonster, (1/24)*1000); } else { nDir = random(4); moveMonster(); } } } } } }


כל ההיטטסטים זה בודק אם המפלצת מתנגשת בקירות וכו'.
שאלתי: יש אפשרות "להלחם" בחוסר הפעולות של המחשב?
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 28-07-2005, 19:12
צלמית המשתמש של BugY
  BugY BugY אינו מחובר  
 
חבר מתאריך: 09.10.04
הודעות: 2,319
זו פונקציה, אין ספק. הרי היא מתחילה ב function. אבל!
בתגובה להודעה מספר 5 שנכתבה על ידי Alpha Leader שמתחילה ב "ברור שזה פונקציה... וגם די..."

הפוקנציה ממש לא חכמה., היא לא מנצלת את היותה פונקציה.
כלומר היא מתיחסת למוביקליפים ספציפיים והיא ארוכה לחינם...

מה שאני מנסה לאמר זה שפונקציה צריכיה להיות דינמית וכמה שיותר שיעילה.
שימושה העיקרי של פונקציה הוא לקצר את הקוד בכך שאתה מכניס לתוכה קוד שנמצא בשימוש יותר מפעם אחת, כך שלא תצטרך לכתוב את הקוד בכל פעם מחדש.

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


בקיצור היא לא דינמית...
_____________________________________
BugYתמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
Animation & ActionScriptin


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 29-07-2005, 19:06
צלמית המשתמש של Jarvis
  Jarvis Jarvis אינו מחובר  
 
חבר מתאריך: 18.01.03
הודעות: 7,325
למען הסר ספק
בתגובה להודעה מספר 1 שנכתבה על ידי ``DarkLight`` שמתחילה ב "אין חוצפה למחשב?! יותר מידי פקודות בAS?"

רקרוסיה אינה דומה לולאה אינסופית, ותכף נסביר למה, אבל בשום פנים ואופן אנחנו לא מנהלים את תכנית הפלאש שלנו עם לולאה אינסופית !

כאשר אנחנו נותנים לפלאש לולאה אינסופית אנחנו גורמים לו "לשפוך מנוע". המנוע הרגיל של פלאש, שמקבל פקודות מה-AS, אבל גם צריך לבצע פעולות של ציור ומחיקה, הזזת הטיים-ליין, חישוב שכבות וזרימת מידע (ועוד המון דברים שהמנוע הזה עושה), לא מצליח להתפנות לשאר הפעולות והתכנית נתקעת. זאת בניגוד לשפות תכנות "רגילות" (AS היא למעשה סקריפט, מעין תסריט שמוגש לתוכנה) אשר משתמשים בהן פעמים רבות בלולאות אינסופיות.

הדרך לנהל תכנית בפלאש, אשר צריכה לבצע אלגוריתם כללי אשר חוזר על עצמו כל הזמן (הזז כדור, חשב אם התבצעה פגיעה, פעל בהתאם) אנחנו משתמשים באחד משני כלים אפשריים - הטיים-ליין ותכונת הפלאש לעבור מפריים לפריים כל זמן קצוב (פריים-רייט), או הפונקציה setInterval שמאפשרות לנו לקבוע למעשה פריים-רייט משלנו. אנחנו אורזים את האלגוריתם הכללי שלנו בתוך פונקציה (אשר תקרא לפונקציות שונות שיבצעו את הפעולות שאנחנו רוצים), ושולחים אותו ל-setInterval או מצמידים אותו באמצעות (onClipEvent(enterFrame.

רקורסיה היא גרועה עוד יותר, כי בעוד לולאה אינסופית מתרחשת בזמן אמת, את הרקורסיה צריך לחשב לפני שהיא מתבצעת (ככה זה ב-AS), ובנוסף כל קריאה לפונקציה נערמת בתוך מחסנית בזיכרון, ובשלב מסוים המחסנית הזאת מתמלאת.
_____________________________________
קפצתי לביקור

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 03:39

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר