Posted by Sandro on June 23rd, 2010

Flash & The Quest for Accessibility – Part #1

Preamble

The greater part of last year i was heads-down-busy developing the EventManager Game which i had the pleasure to build at Liip for Postfinance. EventManager is an educational but fun game, that approaches topics such as budgeting, financing and investing in a modern way (read: not boring you to death).

Today i want to talk to you about the new iteration of the game that we just released a couple of weeks ago. What is new you ask? How about: Accessibility! And not just any form of accessibility – the Game has earned the AA+ Certification from Access For All (their highest certification grade conform to WCAG 2.0).

Overview Part #1

In this two-part blog post i will cover the technical, as well as overall aspects of this endeavour. This first part will cover a brief history of accessibility within the Flash Platform and its current state and hopefully useful insight if you are considering to add accessibility to one of your projects.


Accessibility History in Flash

Thanks to Adobe (and of course Macromedia back then), the Flash Platform has been sporting accessibility features since Macromedia released Flash MX back in 2002. For those that remember, this used to be Flash Player in version 6 and just introduced the Vector Drawing API (ahh, nostalgia.. but i digress).

Over the years obviously the feature set has vastly improved and Adobe (rightly so) can be proud of the level of accessibility that the Platform has today, since it allows you to:

  • Create your own tab order
  • Set alternative text (naming & description text)
  • Set shortcuts
  • Set element focus (also visually if needed)
  • Communicate statuses to screenreaders.

As you see, there is really not much to wish for left here. In fact, if you use the Flex Framework, all these functionalities and features are just a step away from you. But that’s not all, Adobe has made it quite simple to build your own components within the flex framework, that can with little work, implement the accessibility layer. If that wasn’t enough you even have the capability to manually trigger an event to tell attached screenreaders that something has changed within your application.

For us developers, this means that we have the tools and capabilities to fully fullfill the guidelines proposed by WCAG 2.0.

Dark Side of the Accessible Moon

One of the “limitations” when it comes to the Flash Platform and accessibility, is that it’s only available for the Windows Platform.

There have been many voices that critisized Adobe for “only” implementing the Microsoft Active Accessibility (MSAA) API, yet to this day it seems that it is the only documented and standardized API out there. Also it is to be said, that the most popular and wide used screenreader applications have their home only on the Windows Platform.

Misconceptions & Half Truths

Question: So, since the Flash Platform supports accessibility so well, how come there are only a few accessible flash sites out there?

This question is usually met with one of the following answers:

ANSWER: Costs for implementation too high

There is no denying that implementing accessibility into a flash application is a high cost investment, if you do not already have a developer with prior such knowledge.

This has multiple reasons. Depending on your application it will require an entire different approach than just the straight forward making «Your-Standard-RIA App» or «Form-based GUI App» accessible. Which obviously, unless you have done it before will require tinkering, information gathering, experimenting and lots of testing. Hence, it will take time and thereby cost money.

ANSWER: Too difficult & lack of documentation

I have good and bad news. The good news is if you are considering making your RIA accessible, rejoice! Most of the information / documentation on accessibility for the Flash Platform is actually directly aimed at the Flex Framework and at RIA development.

And here is the bad news: if you want to make something completely custom – like a game – accessbile, make sure you have enough time at your hands, you will need it :). But since you are reading this, hopefully i’ll be able to provide you with enough information to ease your pain :).

The main problem lies not in the fact that implementing is difficult or complicated, it’s the fact that real in-depth documentation is either missing, hard to come by and that examples usually only cover little ground. So the difficulty of implementing accessbility really only comes from the fact that you will have to invest lots of time into testing and debugging.

ANSWER: No time / No money within the project

This really is a convergence of the previous two points. Lack of knowledge and the possible cost of implementation, compared to the percentage of users who actually will benefit from that step, leads often – and here we have to be honest to ourselves – to the quick dismissal of accessibility within projects.

ANSWER: What? Flash is accessible?

Yes genius, have you missed the memo? In fact a few years back when i took Macromedia’s Certified Flash Developer exams there was already a huge part dedicated to accessibility within the exam. Go read up, right now!

Adobe followed in Macromedia’s footsteps and continued to improve accessibility, updating the accessibility features once more in their latest Flex 4.0 Framework and implementing their entire accessibility layer into the freshly released AIR 2.0.


The Challenge

Coming back to our topic at hand, for EventManager i was confronted with a game that had many requirements.

The game’s flow for example, does not allow a regular tab order, it just wouldn’t work. There were also many interactions that would take place without any prior user action and those had to inform the player obviously about what is happening.

Depending on where you were in the game or what you wanted to do, the keyboard had to apply a different layout/scheme that is tailored to the task at hand. For example, when you are on the eventgrounds, you need to be able to place/manipulate constructions, which obviously has an entire different control scheme than for example having to bid on an artist in the auction part of the game.

To make the matter worse, the game has a strong mix of pure flash elements and flex components. Oh, and everything had to be multilingual of course :)

Finding a Solution

Keyboard accessibility was pretty clear from the start. We needed a class that allows us to set a specified keyboard layout/scheme to be active when we needed it.

For user-interactions, it was generally agreed that a context-menu would make most sense and thereby should be used for building constructions and general interaction with the eventgrounds in the game.

When it came to implementing screenreader accessibility the concept had to change a couple times, obviously here the lack of knowledge was a problem and forced me to try out various things until finally finding a working and valiable solution.

At this point i would like to extend my most grateful thanks to Adobe’s Accessibility Evangelist (congrats on the new position!) Matt May , he was of incredible help and was able to give me just the right hints, that helped me resolve some key issues that were plaguing me during my quest for accessibility.

The Final Solution

The final solution can be broken down into three essential parts:

  • A global Keyboard Controller that allows applying different control schemes at will.
  • A single class from which we can communicate with a screenreader to manipulate its focus, send text to be read via speech synthesizer or displayed on a braille device.
  • Last but not least a custom context menu component, that allows us to display a menu of possible actions the user can undertake depending on the situation.

I’ll be covering all the technical details and attempted approaches in the second blog post: Flash & the Quest for Accessibility – Part #2.

The Information Hunt

I’ve invested countless hours in information gathering and hunting down resources concering accessibility and possible ways of implementation so that most screenreaders are supported.

Sadly, as it turns out, supporting all available Windows screenreaders seems to be impossible (see these tests). Thereby i concentrated on JAWS and ZoomText since these two applications seem to be the most widely used, when it comes to assistive technologies.

The resources gathered throughout the project that were useful are publicly available via my delicious account. They have notes as to what information was useful and/or if parts of the information was incorrect or not valid anymore.

Conclusion

All in all, getting the chance to implement accessibility in such a big flex application was an incredibly rewarding experience in multiple aspects.

Getting the chance to actually implement accessibility was a great, allbeit, at times nerve-wracking experience that gave me new and invaluable knowledge.

The most rewarding aspect of the entire project though, to me personally, was to receive the excited feedback from our targeted end-users audience. A big thanks also here to Access4All, the entire team at LIIP and everyone else involved in this big effort and of course to Postfinance for giving us this great opportunity.

Feel free to leave comments or get in touch with me if you have any further questions about flash, flex or accessibility.

Related Posts
Post a Comment


25 Comments »

  1. Christophe Strobbe says:

    Hi Sandro,
    You write that “to this day [MSAA] seems that it is the only documented and standardized API out there”.
    In what sense is MSAA “standardized”? Are you aware of the GNOME Accessibility API (ATK API and AT SPI), IAccessible2 (Linux Foundation released version 1.2 on 21 June 2010), Microsoft UI Automation, the Macintosh accessibility APIS for Carbon and Cocoa and the Java Accessibility API (not to mention the several accessibility APIs for mobile platforms that were released in the last two years)?

    comment-bottom
  2. Sandro says:

    Hi Christophe,

    ok, “standardized” may have been the wrong word and Microsoft UI Automation is actually the successor to MSAA. What i meant to say is that MSAA is probably the API that has been available the longest and up to this day was the most reliable to implement. I’m not so much aware of all the different implementations on OSX and Linux since i hardly use these Platforms except for the occasional testing of cross-platform content. But your comment actually highlights quite well the need for a really “standardized” api that could be used across platform/devices.

    What i was trying to say is, i understand that Adobe only implemented MSAA so far as all the other accessibility apis where evolving.

    Here’s hoping that a future version of the flash player will gives us cross-platform accessibility features.

    comment-bottom
  3. Christophe Strobbe says:

    Hi Sandro,

    Thanks for the clarification.
    Standardising the accessibility APIs is apparently the goal of ISO/IEC 13066, a multipart standard/specification/technical report (not each part may end up as an actual standard) being discussed within ISO/IEC SC JTC 1/SC 35 (User interfaces). Part 1 should cover requirements and recommendations for interoperability, part 2 the Windows accessibility API, part 3 IAccessible2, part 4 the Linux accessibility API; part 5 has been reserved for a future Technical Report on the Apple Macintosh OS.
    IAccessible2 has a lot in common with the Java Accessibility API and the GNOME Accessibility API because the goal was more or less to bring Windows capabilities up to the level of ATK/AT-SPI.
    I don’t know if their will ever be a cross-platform accessibility API. (Well, Microsoft says that UIAutomation is cross-platform because it works on Windows Vista and Windows 7 and there is an ATK bridge.)

    comment-bottom
  4. Sandro says:

    Thanks for all the information Christophe.

    I’m not suprised that MS claims Windows Vista < -> Windows 7 to be cross-platform. Very entertaining though :).

    comment-bottom
  5. Christophe Strobbe says:

    Oh, I forgot ISO/IEC 13066-6 for the Java Accessibility API.

    comment-bottom
  6. Congrats for the nomination for Master at the Best of Swiss Web Awards: this outstanding educational game would be a worthy winner – keeping my fingers crossed!
    Cheers!
    Andreas

    comment-bottom
  7. […] traffic, and locked out people with disabilities. It is possible to design in Flash correctly and support accessible access, but few designers did – they treated this as “cramping their creativity.” […]

    comment-bottom
  8. Susannah says:

    What defines a generation gap?

    comment-bottom
  9. What’s up to every one, because I am in fact eager of reading this webpage’s post to be
    updated regularly. It includes pleasant material.

    comment-bottom
  10. Howdy! I know this is kinda off topic but I’d figured I’d ask.
    Would you be interested in exchanging links or maybe guest writing a blog post
    or vice-versa? My site covers a lot of the same subjects as yours and I feel
    we could greatly benefit from each other. If you happen
    to be interested feel free to send me an email.

    I look forward to hearing from you! Terrific blog by the way!

    comment-bottom
  11. I feel this is one of the so much important information for me.

    And i am satisfied reading your article. But wanna commentary
    on few normal issues, The site style is wonderful,
    the articles is in point of fact nice : D. Just right task, cheers

    comment-bottom
  12. Paragraph writing is also a fun, if you know after that
    you can write if not it is difficult to write.

    comment-bottom
  13. This site was… how do you say it? Relevant!!
    Finally I have found something that helped me. Many thanks!

    comment-bottom
  14. Hi, i think that i saw you visited my website thus i
    came to “return the favor”.I am attempting to find things to enhance my
    website!I suppose its ok to use some of your ideas!!

    comment-bottom
  15. web page says:

    I believe this is among the most important information for me.

    And i’m happy reading your article. However wanna observation on some basic issues, The website style is wonderful, the
    articles is in point of fact great : D. Excellent task, cheers

    comment-bottom
  16. I loved as much as you will receive carried out right here.

    The sketch is tasteful, your authored material stylish.
    nonetheless, you command get bought an shakiness over that you wish be delivering the following.

    unwell unquestionably come further formerly again since exactly the
    same nearly a lot often inside case you shield this increase.

    comment-bottom
  17. Helpful info. Fortunate me I discovered your web site by accident,
    and I am stunned why this twist of fate didn’t
    happened earlier! I bookmarked it.

    Look into my blog post – Descargar los Sims 3 gratis

    comment-bottom
  18. Pretty! This was an extremely wonderful post. Thank you for providing this
    information.

    my homepage :: 8 Ball pool Free coins

    comment-bottom
  19. Hi, I do think this is an excellent website. I stumbledupon it
    ;) I’m going to revisit yet again since i have saved as a favorite it.
    Money and freedom is the greatest way to change,
    may you be rich and continue to help others.

    comment-bottom
  20. Helpful info. Lucky me I found your site unintentionally, and I’m
    stunned why this twist of fate didn’t came about
    in advance! I bookmarked it.

    comment-bottom
  21. Francisca says:

    Your style is really unique compared to other people I have read
    stuff from. Many thanks for posting when you have the opportunity, Guess I will just bookmark
    this site.

    Stop by my blog post … How To Get Free Simpoints, Francisca,

    comment-bottom
  22. Woah! I’m really enjoying the template/theme of this
    site. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between usability and appearance.
    I must say that you’ve done a awesome job with this. Also,
    the blog loads extremely quick for me on Chrome. Superb Blog!

    Here is my website :: Sims 3 Island Paradise Free Download

    comment-bottom
  23. I enjoy looking through a post that can make men and women think.
    Also, thanks for permitting me to comment!

    Have a look at my page: como curar la diabetes tipo 1

    comment-bottom
  24. There is no other way of improving security as effective
    as home security alarms. Do you have difficulties in staying awake during long-haul trips.
    A door alarm can be purchased for a very low price.

    comment-bottom
  25. Thawnks a lot foг sharing tɦiѕ with all օf սs you
    actually knoԝ ԝhat you arе speaking ɑpproximately!
    Bookmarked. Kindly additionally consult ԝith my
    webb site =). Ԝe will havе a hyperlink exchange contract amߋng
    us

    Feel free tߋ surf tօ my webpage Clash of Clans New Release

    comment-bottom

RSS feed for comments on this post | TrackBack URL

Leave a comment

Flash Flex Actionscript Tutorials Tutorial AS2 AS3 AS1 Feeds MXML Blog Zinc AIR Launcher Twitter Tweetr Yet Another Coverflow Liip Adobe Macromedia PHP MySQL PostgreSQL XML AMF MXNA Phidgets Schweiz Switzerland Suisse Svizzera Fribourg Freiburg Aargau Baden Publicis Accessibility JAcc Qt FOSDR Flash on the Beach Forum Conference Speaker Speaking Talk