טכניקות פלאש – תמיכה במקלדת וסדר קריאה

הפעלת סרטון “פלאש” באמצעות מקלדת נעשית באמצעות לחיצה חוזרת ונשנית על המקש tab. לחיצה כזאת מעבירה את המיקוד מכפתור לכפתור. לחיצה על Enter או מקש הרווח מפעילה את הכפתור. הפעלה של “פלאש” באמצעות מקלדת אפשרית רק בדפדפן Internet Exlporer גרסה 7 ומעלה. הפעלה של פלאש באמצעות מקלדת בדפדפנים Mozilla, Netscape 7, Opera תגרום ל”תקיעה” של הפוקוס בתוך הסרט ולא תאפשר יציאה ממנו.

כאמור, כאשר המשתמש לוחץ על המקש tab, הפוקוס עובר מכפתור לכפתור. “פלאש” מסמן את הכפתור שנמצא בפוקוס במסגרת צהובה. יש מפתחים המבקשים להימנע מהמסגרת הצהובה, ומכבים אותה באמצעות שינוי של _focusrect ל-false. זוהי פעולה המנוגדת לעקרונות הנגישות, ולכן אסור לבצע אותה.

סימון פוקוס בפלאש מסגרת צהובה סביב הכפתור

סימון פוקוס בפלאש מסגרת צהובה סביב הכפתור

סדר ה tab וסדר קריאה

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

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

הערה – תוכלו לבדוק את הסדר של tab באמצעות המקלדת במחשב שלכם, אך את סדר הקריאה תצטרכו לבדוק באמצעות “קורא-מסך”.

כדי להגדיר סדר טאב וסדר קריאה צריכים להתקיים שני תנאים:

  1. כל המופעים של טקסט בסרט חייבים להיות מוגדרים מראש כטקסט input או טקסט דינמי.
  2. כל המופעים של הסימבולים בסרט (בכל המצבים שלהם) צריכים לקבל an instance name.

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

אלמנטים הנבנים באופן דינמי חייבים לקבל את שם המופע שלהם באמצעות ActionScript. אם לא עומדים באחד מהתנאים האלה, “פלאש” יחזור להקריא על-פי סדר בררת-המחדל (כאמור, ברוב המקרים הוא אינו לוגי). התנאים האלה רלוונטיים לכל האלמנטים בסרט, גם האלמנטים המרוּנְדרים מחוץ לבמה וגם האלמנטים הבלתי-נראים.

אם אתם רוצים להגדיר את סדר ה-tab בסרט שלכם, עליכם להמיר את האובייקטים הסטטיים של הטקסט לאובייקטים דינמיים.

עכשיו, הוסיפו מידע לגבי סדר הקריאה והפוקוס בשדה Tab Index, בחלון הנגישות (אם יש לכם flashMX2004 ומעלה) או באמצעות ActionScript, ל-keyframe בפְרֵיים הראשון של הסרט:

_root.Homepage.tabIndex = 1
_root.Contact.tabIndex = 2
_root.FirstName.tabIndex = 3
_root.LastName.tabIndex = 4
_root.SubmitButton.tabIndex = 5

כדי שסדר הפוקוס שקבעתם יעבוד, עליכם להגדיר את כל יחידות הטקסט כדינמיות, ועליכם להגדיר tab order לכל כפתור, movie clip, או אובייקט של טקסט על הבמה שהוגדר כנגיש.

הסרת אובייקטים מסדר הקריאה

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

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

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

אוביקט שחלקו נמצא מחוץ לבמה

אוביקט שחלקו נמצא מחוץ לבמה

דרך פורמלית יותר להבטיח ש”קורא-מסך” יימנע מקריאת אובייקט היא הגדרת ה-._visible property בתור false, או ה- .silent property בתור true. אם נתייחס לדוגמה הקודמת, אפשר להסיר באופן זמני את העיגולים “Third” ו-“Second” מסדר הקריאה.

שלושה עיגולים שנמצאים על הבמה אך ואינם נחשפים לקורא מסך ע"י silent property

כאשר ה-._visible property מוגדר כ- false, “קורא-המסך” לא יקרא את העיגולים, אך הם גם אינם נראים.

second_mc._visible = false;

third_mc._visible = false;

שימוש ב-.silent property יבטיח שקורא המסך לא יקרא את האובייקטים הללו, אך הנראות שלהם לא תושפע.

second_mc.silent = true;

third_mc.silent = true;

שליטה בסדר הקריאה כשקובצי SWF נטענים בזמן-אמת

במקרים שבהם קובצי-ילד מסוג swf נטענים לתוך הסרט-ההורה, יש לערוך את רשימת ערכי ה-tab index בתוך סרטון-הילד. אך חשוב שכל רשימת הערכים בסדר הקריאה של כל swf-ילד תהיה ייחודית. לדוגמה, אם לכל אחד משני סרטי-ילד שנטענו לתוך סרטון-הורה יש שלושה אלמנטים עם ערכי tab index של 1, 2 ו-3, קורא המסך יקרא את הערך הראשון של הסרטון הראשון שנטען, ואז את הערך הראשון של הסרטון השני שנטען. לאחר מכן, “קורא-המסך” יקרא את הערך השני של הסרטון הראשון שנטען, ואז את הערך השני של הסרטון השני שנטען, וכך הלאה. כדי לקרוא את תוכן הסרטון הראשון ולאחר מכן את תוכנו של הסרטון השני, רשימת ערכי ה-tab index של הסרטון הראשון צריכה להיות 1 ,2 ,3, ורשימת הערכים של הסרט השני צריכה להיות 4, 5, 6. ערכים אלה אינם צריכים להיות עוקבים אך עליהם להיות ייחודיים.

זיהוי “קורא-המסך”

מקרה זה נועד לרווחתם של המשתמשים ב”קוראי-מסך” בלבד, לפיכך, השימוש בשיטה זו נעשה לעתים קרובות בצירוף זיהוי “קורא-המסך” (screen reader detection). ל”פלאש” יש יתרון ייחודי על JavaScript, בכך שהוא מסוגל להשתמש ב-MSAA כדי לזהות את נוכחותו של “קורא-מסך”. ה-method Accessibility.is Active יחזיר ערך true אם “קורא-מסך” נמצא וממוקד בתוכן של “פלאש” באותו זמן. חשוב שה-method לא יופעל ברגעים הראשונים של ה-time line בסרטון, אחרת הוא עלול להחזיר false negative. מעצבים רבים בוחרים לחבר שיטה זו לכפתור הראשון בסרטון ולא להפעילה בפְרֵיים הראשון.

הקצאת קיצורי מקלדת לרוב ה-controls החשובים

אפשר לעזור למשתמש להשתמש בקיצורי מקלדת כדי לנווט בתוך יישומים מורכבים עם מספר גדול של controls. עצם הלחיצה על מקשי המקלדת עלולה להיות קשה להרבה משתמשים עם מוגבלויות תנועה. שימוש בקיצורי מקלדת מצמצם במידה ניכרת את מספר הלחיצות על מקשי המקלדת הנדרשות לביצוע משימות חשובות. אין זה מספיק להשתמש בשדה הקיצורים שבלוח בקרת הנגישות או ב-shortcut property ב-ActionScript. כדי ליצור קיצורי מקלדת יש לדאוג ש-listener event יוגדר ושיוקצה סקריפט לאותו listener. שדה הקיצורים רק מודיע על ערך קיצור דרך MSAA. הוא אינו יוצר את ה-listener. יתר על כן, נכון לזמן כתיבת מסמך זה, אין “קוראי-מסך” התומכים במאפיין זה ב-MSAA.