|
בשיעור זה נלמד כיצד ניתן לגלול טקסט שנמצא בתוך שדה טקסט.
ידע נדרש - משפטי תנאי, עבודה עם משתנים |
|
|
|
השיטה לגלילת טקסט זהה לחלוטין בפלאש 4 ובפלאש 5 למרות ששיעור זה והדוגמא המצורפת הם בפלאש 5. על מנת לאפשר גלילת טקסט אנו צריכים לאפיין את הטקטס שלנו כ multiline ו wordwrap - בחירת האפשרות מתוך text options (בפלאש 4 מתבצע מתוך המאפיינים של שדה הטקסט) - אפשרויות אלו מגדירות את הטקסט כבעל יותר משורה אחת ושוברות את השורות על מנת שיתאימו לרוחב השדה. כמו כן, נקרא לשדה בשם, field1 במקרה שלנו, על מנת שנוכל להזין לתוכו טקסט שאותו נגלול. ![]() |
|
בדוגמא שלנו, הפקודה שמכניסה את הטקסט לשדות רשומה בפריים הראשון - אין אפשרות לרשום את הטקסט ישירות בשדה כי אז פלאש היה מגדיל את השדה לגודל הטקסט אוטומטית - ולכן עלינו להשתמש בפקודה setVariable על מנת להזין את הטקסט לשדות.
לכל שדה טקסט בפלאש (שמוגדר כ - multiline) יש 2 מאפיינים שאותם אפשר לברר: scroll - מאפיין זה מחזיר את מספר השורה המוצגת עכשיו כשורה הראשונה בשדה - אם בשדה יש 10 שורות ועכשיו השורה השלישית מוצגת ראשונה - scroll יחזיר את הערך 3. את scroll אפשר לקרוא וגם לקבוע. maxscroll - מאפיין זה מחזיר את מספר השורה האחרונה שאפשר להציג כשורה הראשונה כל עוד השדה ישאר מלא (אם יש לנו שדה טקסט בגובה 4 שורות והטקסט שלנו הוא 10 שורות - maxscroll יחזיר את הערך 7, שכן אם הוא יציג את שורה 8 בתור השורה הראשונה לא תהיה לו שורה 11 להציג בשורה הרביעית בשדה. maxscroll נקבע אוטומטית ואין לנו אפשרות לשנות אותו.
הפקודות נמצאות גם בפלאש 4 - הן רק לא מופיעות בתפריט. כאשר נרצה לקבוע שהשורה הראשונה שתוצג בשדה Field1 תהיה שורה 8, נשתמש ב setVariable על מנת לרשום את המשוואה הבאה: Field1.scroll = 8;וכאשר נרצה לקבוע שהשורה הראשונה שתוצג בשדה Field1 תהיה השורה האחרונה שאפשר להציג: Field1.scroll = Field1.maxscroll; |
|
על מנת לבצע גלילה נכונה עלינו לבדוק בכל לחיצה על כפתור האם אנחנו יכולים בכלל לגלול לכיוון המבוקש - לדוגמא - אם השורה הראשונה שמוצגת היא באמת השורה הראשונה - אין לנו לאן לגלול יותר למעלה.
במידה והקוד שלנו לא יבדוק את ההגבלות האלו (וייוצרו מצבים ש - scroll יהיה שווה למספר קטן מ - 0) לא יקרה כלום ואין זו שגיאה, אבל לשם עבודה נכונה, רצוי לבדוק זאת.
לפי ההסבר הנ"ל כך אמור להראות התנאי שגולל למעלה:
if (_root.Field1.scroll>1){
_root.Field1.scroll = (_root.Field1.scroll)-1;
}
במשפט התנאי אנו בודקים אם הערך שמחזיר scroll גדול יותר מ - 1 (כלומר אם השורה
שמוצגת
ראשונה היא לא השורה הראשונה בכל הטקטס), ואם התנאי מתקיים אנו מורידים 1 מ field1.scroll - כלומר מתחילים להציג את הטקסט שורה אחת קודם למה שמוצג עכשיו.
בכפתור הגלילה למטה אנחנו צריכים לבדוק אם מספר השורה שמוצגת עכשיו כראשונה (scroll) קטן יותר ממספר השורה המקסימלי שאפשר להציג (maxscroll) ואם התנאי מתקיים אנו מקדמים את ה - scroll העכשווי ב - 1 (מציגים שורה אחת קדימה).
if (_root.Field1.scroll<_root.Field1.maxscroll) {
_root.Field1.scroll = _root.Field1.scroll+1;
}
כל ההסברים עד עכשיו מספיקים ליצירת גלילה של שורה אחת בכל לחיצה - על מנת ליצור גלילה "אוטומטית" שלא תפסיק כל עוד אנחנו מעל הכפתור (או כל עוד אנחנו לוחצים עליו) יש להשתמש ב - movieclip שבו יהיו הפקודות לגלילה (בדיוק כמו בגלילה הפשוטה) והוא ירוץ עליהן כל עוד אנחנו מעל הכפתור.
בגלילה הימנית בדוגמא ("גלילה מתקדמת") השתמשתי ב movieclip בשם scroll_check: קיפריים 1 - פקודת stop (כדי שלא יתחיל לבצע את הפקודות מיד כשהוא עולה) קיפריים 5 - לייבל בשם scrollUP ובו תנאי לגלילה למעלה (זהה לזה שהוזכר מקודם) קיפריים 6 - פקודת gotoAndPlay ללייבל scrollUP כך שברגע שנקרא ללייבל scrollUP תתבצע גלילה למעלה (במידה ואפשר) שתחזור על עצמה כל הזמן - עד שנחזיר את ראש הנגינה לפריים 1 (שבו יש פקודת stop). במקרה זה לכפתור יש תפקיד פשוט - ב - rollOver על הכפתור הוא אומר ל - movieclip שבו הפקודות לגלילה (scroll_check במקרה שלנו) לקפוץ ללייבל שבו הפקודות לגלילה למעלה, וב rollOut לחזור לפריים 1, שם הוא עוצר (ע"י Tell Target בפלאש 4).
on (rollOver) {
scroll_check.gotoAndPlay("scrollUP");
}
on (rollOut) {
scroll_check.gotoAndStop(1);
}
כמובן שאנו צריכים להכין גם לייבל מתאים לגלילה למטה, ולקרוא לו מתוך הכפתור שגולל למטה. להורדת קובץ דוגמא - לחץ כאן בהצלחה |