תאוריה (דלגו אם אתם רק רוצים תקוד)
הזמן שחולף בפלאש תלוי בקצב הFPS שהגדרתם בסרטון שלכם (fps - frames per second).
קצב זה הוא הקצב התאורתי שבוא פלאש יעבוד במחשב שלכם.
אך קצב זה שונה מהקצב האמיתי שבו עובר הזמן בסרטון שלכם כאשר הוא מופעל. הקצב שבו הסרטון פועל באופן מעשי נקרא FPS מעשי, ולמעשה הוא תמיד שואף להיות הקצב התאורתי שאותו הגדרתם.
להמחשה, אם היה ברשותי מחשב בעל יכולת חישוב אין סופית, אז הFPS התאורתי היה שווה לFPS המעשי.
הקצב המעשי תמיד יהיה קטן מהקצב התאורתי (כלומר פחות פריימים לשניה מאשר קבעתם) והוא מופחת בגלל יכולות המחשב שלכם או של כל בן אדם שמפעיל את הסרטון שלכם.
אם היה ניתן לבדוק כמה מאמץ נדרש מהמחשב, היה אפשר לראות שככל שהקצב התאורתי יותר גבוה, כך המחשב עובד יותר במטרה "להדביק" את הפער בין הקצב התאורתי לקצב המעשי.
השאלה שנשאלת היא אם יש פער כזה בין הקצב המעשי לתאורתי, איך מחשבים אותו? ואיך הוא משפיע על הביצועים של הסרטון שלי?
כמובן שככל שהפער הזה גדול יותר יש אינדיקציה לפריים עמוס פעולות או אירועים או ציורים או תנועות.
אם היינו רוצים לבחון מה הפער הזה בזמן אמת, היינו צריכים איך שהוא להגדיר שעון שימדוד כמה זמן בתאכלס לוקח לכל פריים להגיע
בואו נעבור לחלק המעשי
אז איך עושים את זה?
קוד
fps = your_theoretical_fps; //instead of this insert the fps you defined in flash
function fpsmeter() {
trace(fps);
fps = 0;
onEnterFrame = function () {
fps++;
};
}
my_interval = setInterval(fpsmeter, 1000);
אוקי תדביקו את הקוד הזה בפריים הראשון (תשנו את המשתנה הראשון לFPS שהגדרתם בפלאש) לראות מה הוא עושה (התוצאה תבוא בחלון הOUTPUT אז תפעילו תסרטון מתוך הקובץ FLA ולא STANDALONE)
מה שעשיתי פה זה במילים פשוטות: פעם בשניה אני מפעיל פונקציה, והפונקציה הזאת מוסיפה 1 למשתנה FPS כל פריים, ככה שברגע שזימנתי את הפונקציה בפעם הבאה (שזה שניה אחרי) המשתנה שלי הגיע לFPS המעשי (כי הוא גדל ב 1 כל פריים).
בשורה הראשונה הגדרתי משתנה FPS, ושמתי בתוכו את הFPS התאורתי (אותו FPS של הסרטון שלכם)
שורה שניה הגדרתי פונקציה בשם FPSMETER ומה שהיא עושה זה:
מדפיסה את FPS, מאפסת את FPS, ואז בתוך הפונקציה הגדרתי עוד פונקציה שרצה פעם בפריים שמעלה את FPS.
לאחר מכן, הגדרתי INTERVAL לפונקציה (שזה בעצם פעולה שמפעילה פונקציה כל X זמן, במקרה שלי 1000 מילי שניות שזה בעצם שניה) שמפעיל אותה כל שניה שלמה, ככה שכל שניה מודפס לי בחלון הOUTPUT הFPS ברגע נתון.
הערות חשובות
-הFPS שמודפס בא בחלון הOUTPUT, אבל אם אתם רוצים שהוא יופיע בתיבת טקטס על המסך פשוט במקום הפקודה TRACE שימו פקודה שמכניסה את FPS לתוך טקסט של תיבת טקסט
-הFPS שמודפס הוא FPS מעשי, והוא משתנה בהתאם לכוח שדורש פלאש מהמחשב. הFPS הזה אמור להשתנות כל שניה ושניה בהתאם למה יש בתוך הפריים...אם תנסו לדוגמא לשים שם אנימציה, תוכלו לראות איך תזוזה שלה מורידה את הFPS המעשי, אפילו אם תנסו להזיז את העכבר הFPS עשוי לרדת בכמות קטנה.






ציטוט ההודעה