« How many accessibility experts does it take to screw in a lightbulb? | Main | In search of... a perfect plugin technique »
August 08, 2005
Flash 8 Arrives!
To kick off the new release, I thought I would start with a note about the best feature of Flash 8, in my humble opinion. A small but significant change was made to the player that allows authors to partially specific the reading order of a Flash Movie. This means that author no longer have to specify the reading order for an entire movie. One forgotten object will not break the entire movie. One piece of static text does not muck up the program.
In Flash Player 6 and 7, the single biggest technical headache was managing the tab order. You had to test the movie multiple times a day to ensure that the reading order had not gone off the rails. In Flash Player 8, it gets much better.
I built out some test cases similar to a set I did about a year ago to help developers understand the new feature. Try these out with a screen reader or download the source files and check them out for yourself.
Reading Order Cases
The following is a list of scenarios illustrating how .tabindex can be used to control reading order in Macromedia Flash Player 8.
Default Behavior
Case 1
Three pieces of static text on the stage. Red from left to right, “Third, Second, First”. No ActionScript is defined.
Basic Reading Order
Case 2
Three pieces of dynamic text on the stage. Each has an instance name specified. The tab order is specified using ActionScript to read from right to left, “First, Second, Third”.
_root.first_txt.tabIndex = 1;
_root.second_txt.tabIndex = 2;
_root.third_txt.tabIndex = 3;
Partial Reading Order
Case 3
Four pieces of dynamic text on the stage. Each has an instance name specified. The third text object is not listed in the tab order. The tab order is specified using ActionScript to read from right to left, “First, Second, Fourth”. The third object is placed at the end of the reading order.
_root.first_txt.tabIndex = 1;
_root.second_txt.tabIndex = 2;
_root.fourth_txt.tabIndex = 4;
Case 4
This is the same as Case 3, but with a circle drawn on the stage. This does not affect the reading order.
Case 5
This is the same as Case three, but the circle has now been saved as a graphic symbol. This does not affect the reading order.
Case 6
This is the same as Case 4, but this time the circle has been saved as a movie clip symbol. No instance name is specified and the symbol is left out of the tab order in the ActionScript. This does not affect the reading order.
Scoping
Case 7
This is the same as Case 2. This time, the static text element is saved as a movie clip, given an instance name and the movie clip is placed in the tab order. The reading order reverts to the default.
_root.first_mc.tabIndex = 1;
_root.second_mc.tabIndex = 2;
_root.third_mc.tabIndex = 3;
Case 8
This is the same as Case 2. This time, the path for each object is relative, not absolute. This does not affect the reading order.
this.first_txt.tabIndex = 1;
this.second_txt.tabIndex = 2;
this.third_txt.tabIndex = 3;
Use of .silent and ._visible
Case 9
Four pieces of dynamic text on the stage. Each has an instance name specified and listed in the tab order. The third text object has the .silent property set to true. The third object is not read.
_root.first_txt.tabIndex = 1;
_root.second_txt.tabIndex = 2;
_root.third_txt.tabIndex = 3;
_root.fourth_txt.tabIndex = 4;_root.third_txt._accProps = new Object();
_root.third_txt._accProps.silent = true;
Accessibility.updateProperties;
Case 10
Four pieces of dynamic text on the stage. Each has an instance name specified and listed in the tab order. The third text object has the ._visible property set to false. The third object is not shown or read.
_root.first_txt.tabIndex = 1;
_root.second_txt.tabIndex = 2;
_root.third_txt.tabIndex = 3;
_root.fourth_txt.tabIndex = 4;_root.third_txt._visible = false;
Loading movies into a parent swf
Case 11
This movie loads three child movies into the parent shell. The tab order is specified in each of the child .swfs. The tabIndex values for each of the child .swfs are unique. The text reads in alphabetical order.
Posted by Bob Regan at August 8, 2005 06:35 PM
Comments
That's a very welcome change. I spent quite a lot of time with this reading order stuff with the Flash 7 player and it was very frustrating to track down every last object that might affect it. I'm still targeting Flash MX, but always recommend the latest Flash Player where accessibility is a requirement.
Posted by: Alexander McCabe at August 9, 2005 07:32 AM
Sorry, the only case that work on OSX with Safari or Firefox with Flash 8.0.5 is case 7.
too bad.
Posted by: erixtekila at August 9, 2005 11:55 AM
Hi there,
Firefox is not accessible today using a screen reader. That will soon change. Once it does we can look into modfying the Flash Player that runs in Firefox. The mac player is not accessible either we are looking at that as well.
However, keep in mind that today, 99.9% of blind users of the web are running on Windows using IE.
Cheers,
Bob
Posted by: Bob Regan at August 9, 2005 05:22 PM
Whoo hoo! Thanks for listening to our anguished cries and coming to the rescue. I can't wait for Flash 8 player penetration to reach the point that I can breath a little easier.
Posted by: Michael Jordan at August 10, 2005 12:56 PM
FYI : A french translation is available for the french community. Une traduction en français est disponible. http://especedepetitefille.free.fr/bavardages/index.php/?2005/08/21/28-flash-8-et-accessibilite
Posted by: Laurent BERTHELOT at August 22, 2005 01:58 AM
another great feature in flash 8! but has any effort been made to address the issue of hyperlinks within the content of html-enabled textfields not being accessible to screenreaders?
Posted by: MattL at August 23, 2005 05:42 AM
I have built a few pieces and tried to make them as accessible as I could.
I always found the tab index issue would create more of an issue for the screen reader than for keyboard users.
Will just downloading the new player have an improvment on previously built content that attempted accessibility but didnt quite get there?
Just wondering did you see any improvement on stuff you would have built previous to this release of the player.
Posted by: Kieran Guckian at September 28, 2005 07:45 AM