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

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



  #2  
ישן 29-07-2005, 12:43
  Darakan Darakan אינו מחובר  
 
חבר מתאריך: 30.04.04
הודעות: 310
בתגובה להודעה מספר 1 שנכתבה על ידי Darakan שמתחילה ב "wait, delay, משהו?"

ארג אני לא מסוגל לערוך.
מצאתי פתרון כלשהו באיזה Guide.

קוד:
function moveBG() { _root.bg1._x-=1; _root.bg2._x-=1; _root.bg3._x-=1; } setInterval(moveBG, a); if( _root.bg1._x==-350 ) {_root.bg1._x=700;} if( _root.bg2._x==-350 ) {_root.bg2._x=700;} if( _root.bg3._x==-350 ) {_root.bg3._x=700;} a-=1; stop();


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

A זה משתנה התאוצה, שמוגדר כ-1000 בפריים קודם.

בתצורה הנוכחית, יש לי 2 בעיות:-
1. ה-A לא יורד עם הזמן, אלא נשאר כ-999, ולכן התנועה היא קבועה (פיקסל כל שניה - למה הוא בכלל זז אם עשיתי לו STOP לא ברור לי גם...)
2. פונקציות ה-IF לא מתבצעות (כי הוא מבצע אותן רק פעם אחת, כשהתנאי לא מתקיים, בגלל שכל הסקריפט הזה לא מצוי בלולאה.

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

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

דוגמה לקוד עם לולאה:
קוד:
function moveBG() { _root.bg1._x-=1; _root.bg2._x-=1; _root.bg3._x-=1; } for (i=1; i=2000; i++) { setInterval(moveBG, a); if( _root.bg1._x==-350 ) {_root.bg1._x=700;} if( _root.bg2._x==-350 ) {_root.bg2._x=700;} if( _root.bg3._x==-350 ) {_root.bg3._x=700;} a-=1; } stop();


צירפתי את קובץ ה-FLA. (קצת גודל
תודה לעוזרים!https://2005-uploaded.fresh.co.il/2...29/84134590.fla https://2005-uploaded.fresh.co.il/2...29/84134590.fla
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 29-07-2005, 12:52
צלמית המשתמש של Jarvis
  Jarvis Jarvis אינו מחובר  
 
חבר מתאריך: 18.01.03
הודעות: 7,325
אוי ואבוי, אתה תשרוף למחשב את ה-CPU :)
בתגובה להודעה מספר 2 שנכתבה על ידי Darakan שמתחילה ב "ארג אני לא מסוגל לערוך. מצאתי..."

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

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 29-07-2005, 13:32
צלמית המשתמש של Jarvis
  Jarvis Jarvis אינו מחובר  
 
חבר מתאריך: 18.01.03
הודעות: 7,325
כן, אבל יש מגבלות התוכנה
בתגובה להודעה מספר 4 שנכתבה על ידי Darakan שמתחילה ב "אוקי, הבנתי את הטעות שלי,..."

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

קוד:
var t:Number = 200 // time to wait in miliseconds function move (time:Number) { // Here is your code that calcs position of object after "time" miliseconds obj.vx += obj.ax; obj._x += obj.vx*time; } setInterval(move,t,t); // Call the function "move" every "t" miliseconds, with the argument "t"

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

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


נערך לאחרונה ע"י Jarvis בתאריך 29-07-2005 בשעה 13:38.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

הדף נוצר ב 0.04 שניות עם 12 שאילתות

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

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