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

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



  #1  
ישן 20-12-2004, 20:14
  ASHVAK ASHVAK אינו מחובר  
 
חבר מתאריך: 16.06.03
הודעות: 247
בעיה בקוד... hitTest

הגדרתי פונקציה בפרם הראשון:

קוד:
function cullosionTest(obj1,obj2,units,frame){ with(obj1){ if (units > 1){ for (i=0; i<=units; i++){ objName='"' add obj2 add '"' add i; objName2=obj2 add i; if (_root.obj1 ,hitTest(_root.objName2)){trace("Ok"); _root.objName2.gotoAndPlay(frame) } } }else{ objName='"' add obj2 add '"'; if (obj1.hitTest(obj2)){ _root.obj2.gotoAndPlay(frame) } } } }


בקיצור- הקוד הזה בודק םא יש התנגשות בין שני גופים.

בנוסף לזה השתמשתי בפונקציה להכפיל אובייקטים:

קוד:
function duplicateObject(obj,times){ objName='"' + obj + '"'; for (i=0; i<=times; i++){ obj.duplicateMovieClip(objName add i,this.getNextHighestDepth()); _root[objName add i]._x = random(600); } }


יש איזשו חפץ שנופל ופוגע בחפץ אחר, שהוכפל כמה פעמים, אבל הפונקציה שבודקת את הפגיע לא מחזירה ערך חיובי!
אני כבר כמה ימים מנסה למצוא תבעיה, הסתכלתי בעבודות לפני (המשחק עם הטיל) העתקתי את הקוד, נסיתי צורות שונות, נסיתי כל מיני דברים אבל משו לא בסדר, זה לא עובד!
צריך לציין שכאשר בדקתי את הhitTest באופן רגיל (שהפונקציה מוגדרת בתוך הMC עצמו) ובבדיקה רק לאובייקט אחד (לא מוכפל) זה עובד, אבל אם מעתיקים את זה לתוך פונקציה ומזמנים אותה על ה MC, זה לא פועל.
_____________________________________
~-LiViDuS-~

...Previous knowen as AshvaK...

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 20-12-2004, 22:08
צלמית המשתמש של Rutasashi
  Rutasashi Rutasashi אינו מחובר  
 
חבר מתאריך: 20.10.04
הודעות: 1,341
אז תקשיב
בתגובה להודעה מספר 2 שנכתבה על ידי ASHVAK שמתחילה ב "שניתי קצת את הפונקציה שתראה יותר טוב, אבל עדיין לא עובד.."

יש לך כמה בעיות
1) ( [ obj1, hitTest(_root[objName add i
תחליף את הפסיק בנקודה! (זה hitTest. לא יודע מאיפה הגעת לזה שזה פסיק... זה מטודה של הCLASS לא איזה שהוא ארגומנט של ה IF.....

2) WTF, למה אתה לא משתמש במערך!!! כן זה כל כך פשוט! מערך!!!!
אם אתה כבר עושה משהו על קבוצה של אובייקטים (MCים) אז שים אותם במערך!)
למה לאלתר שמות ולהכריח אותם להיות במבנה מסויים?

3) סתם הוספת מרכאות לשם... בשביל מה מרכאות???? קוראים למשהו ""sdv1"" המרכאות מסמנות סטרינג.... לפי מה שעשית פה ניראה שלא הבנת את ההבדל בין ערך לבין משתנה... וזה בסיסי... ציפיתי ממך ליותר.... ואם אתה מעביר לשם את השם אז תשלח "women" כי לפי מה שהבנתי ממך אין באמת משתנה בשם women אלא רק women1 women2 וכו'

obj לא חייב להיות על הבמה הראשית... תעשה פונקציות כלליות יותר שייתמכו בכל קבוצה של אובייקטים לאו דווקא בבמה הראשית
בקיצור אתה צריך לקלוט אובייקט ומערך של MCים (אתה לא צריך אורך המערך אני חושב ש length. יעשה לך את זה)

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 20-12-2004, 23:01
  ASHVAK ASHVAK אינו מחובר  
 
חבר מתאריך: 16.06.03
הודעות: 247
אוקיי אז ככה:
בתגובה להודעה מספר 1 שנכתבה על ידי ASHVAK שמתחילה ב "בעיה בקוד... hitTest"

שינתי את זה למערך, וזה פותר חצי בעיה. ככה זה נראה בנתיים:
קוד:
function cullosionTest(obj1,obj2,units,frame){ if (units > 1){ for (i=0; i<=units; i++){ trace(obj[i]._x) if (obj1.hitTest(obj[i])){ trace("bom!" + obj[i] + i); obj[i].gotoAndPlay(frame) break; } } } } function duplicateObject(obj1,times){ obj= new Array(); for (i=0; i<=times; i++){ obj[i]=obj1; obj1.duplicateMovieClip(obj[i] ,this.getNextHighestDepth()); obj[i]._x = random(600); } }


ציטוט:
2) WTF, למה אתה לא משתמש במערך!!! כן זה כל כך פשוט! מערך!!!!
אם אתה כבר עושה משהו על קבוצה של אובייקטים (MCים) אז שים אותם במערך!)
למה לאלתר שמות ולהכריח אותם להיות במבנה מסויים?

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

ציטוט:
3) סתם הוספת מרכאות לשם... בשביל מה מרכאות???? קוראים למשהו ""sdv1"" המרכאות מסמנות סטרינג.... לפי מה שעשית פה ניראה שלא הבנת את ההבדל בין ערך לבין משתנה... וזה בסיסי... ציפיתי ממך ליותר.... ואם אתה מעביר לשם את השם אז תשלח "women" כי לפי מה שהבנתי ממך אין באמת משתנה בשם women אלא רק women1 women2 וכו'

כמו שאמרתי ,התרגלתי לא להשתמש במערכים לזה, אז בלי מערכים צריך להוסיף מרכאות. ובכל מקרה זה לא טוב.

ציטוט:
Rutasashiעכשיו אני מבין שאתה באמת מתחיל ולא ממש מתקדם, בכל מקרה אתה עושה עבודה מעולה למישהו מתחיל! (תסתכל על המתחילים שנמצאים פה והם יגידו לך לבד שאתה עושה עבודה מעולה)

נכון, אני רק מתחיל, כי תמיד יש משהו חדש ללמוד...
_____________________________________
~-LiViDuS-~

...Previous knowen as AshvaK...

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 20-12-2004, 23:43
  ASHVAK ASHVAK אינו מחובר  
 
חבר מתאריך: 16.06.03
הודעות: 247
בתגובה להודעה מספר 7 שנכתבה על ידי Rutasashi שמתחילה ב "אני יתקן על הקוד:"

[QUOTEobj[i]=obj1; // למה ? מיותר לחלוטין[/QUOTE]
לא מיותר, כי זה מכניס למערך (שהוא נקרא obj, ואני מגדיר אותו לפני הפונקציה) את השם של הMC, בכל מקרה נסיתי להוריד והפונקציה לא פועלת.

ציטוט:
break; //אתה לא רוצה לבדוק את כולם? break למה
אם כבר פגע והחזיר ערך אמת, אז למה לי להמשיך לבדוק??

קוד:
function cullosionTest(array,obj1,obj2,units,frame){ if (units > 1){ for (i=0; i<=units; i++){ trace(array[i]._x) if (obj1.hitTest(array[i])){ trace("bom!" + array[i] + i); array[i].gotoAndPlay(frame) } } } } function duplicateObject(array,obj1,times){ for (i=0; i<=times; i++){ array[i]=obj1; obj1.duplicateMovieClip(array[i],this.getNextHighestDepth()); array[i]._x = random(600); } return array; }


לא מבין מה return כל כך עוזר לי פה.

בכל מקרה, בוא אני אסביר את הבעיה החדשה:
המערך (שהוגדר לפני הפונקציה duplicateObject בבמה הראשית) לא פועל בפונקציה cullosionTest שמוזמנת מMC בבמה. אני חושב שזה בגלל שהערכים של המערך הולכים לאיבוד או משו. אני צריך דרך להביא את הנתונים לפונקציה השניה...

כשאני כותב בפונקציה השניה
קוד:
trace(array[1]._x) ; trace(array[2]._x); trace(array[3]._x);


זה מחזיר לי את אותם הערכים, מה שבפועל לא נכון...
_____________________________________
~-LiViDuS-~

...Previous knowen as AshvaK...

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #15  
ישן 22-12-2004, 00:00
  ASHVAK ASHVAK אינו מחובר  
 
חבר מתאריך: 16.06.03
הודעות: 247
אוקיי, הבעיה נפתרה + מסקנה:
בתגובה להודעה מספר 1 שנכתבה על ידי ASHVAK שמתחילה ב "בעיה בקוד... hitTest"

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

מסקנה:
לתת שם חדש ולא להוסיף לשם המקורי של האובייקט, לא רק add i!!!!

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

Rutasashi, תודה רבה לך, עזרת לי המון! אני אשמור לך קרדיט בפרוייקט הזה שאני עובד עליו.
_____________________________________
~-LiViDuS-~

...Previous knowen as AshvaK...

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

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

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

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

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



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

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

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

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