Package | flash.accessibility |
Class | public final class Accessibility |
Inheritance | Accessibility Object |
Language Version: | ActionScript 3.0 |
Runtime Versions: | Flash Player 9, AIR 1.0 |
To get and set accessible properties for a specific object, such as a button, movie
clip, or text field, use the DisplayObject.accessibilityProperties
property.
To determine whether the player is running in an environment that supports accessibility aids, use
the Capabilities.hasAccessibility
property.
See also
Property | Defined By | ||
---|---|---|---|
active : Boolean [static] [read-only]
Indicates whether a screen reader is currently active and the player is
communicating with it. | Accessibility | ||
constructor : Object
A reference to the class object or constructor function for a given object instance. | Object | ||
prototype : Object [static]
A reference to the prototype object of a class or function object. | Object |
Method | Defined By | ||
---|---|---|---|
Indicates whether an object has a specified property defined. | Object | ||
Indicates whether an instance of the Object class is in the prototype chain of the object specified
as the parameter. | Object | ||
Indicates whether the specified property exists and is enumerable. | Object | ||
[static]
Sends an event to the Microsoft Active Accessibility API. | Accessibility | ||
Sets the availability of a dynamic property for loop operations. | Object | ||
Returns the string representation of this object, formatted according to locale-specific conventions. | Object | ||
Returns the string representation of the specified object. | Object | ||
[static]
Tells Flash Player to apply any accessibility changes made by using the DisplayObject.accessibilityProperties property. | Accessibility | ||
Returns the primitive value of the specified object. | Object |
active | property |
active:Boolean
[read-only] Language Version: | ActionScript 3.0 |
Runtime Versions: | Flash Player 9, AIR 1.0 |
Indicates whether a screen reader is currently active and the player is communicating with it. Use this property when you want your application to behave differently in the presence of a screen reader.
Note: If you call this property within 1 or 2 seconds of the first
appearance of the Flash® window in which your document is playing, you might get a return
value of false
even if there is an MSAA
client. This happens because of an asynchronous communication mechanism between Flash
and accessibility clients. You can work around this limitation by ensuring a delay of 1 to 2
seconds after loading your document before calling this method.
Capabilities.hasAccessibility
property.
Implementation
public static function get active():Boolean
See also
sendEvent | () | method |
public static function sendEvent(source:DisplayObject, childID:uint, eventType:uint, nonHTML:Boolean = false):void
Sends an event to the Microsoft Active Accessibility API.
Microsoft Active Accessibility handles that event and sends the event
to any active screen reader application, which in turn reports the change to the user.
For example, when a user toggles a RadioButton instance, the RadioButton's
AccessibilityImplementation calls Accessibility.sendEvent()
with the event type EVENT_OBJECT_STATECHANGE
.
Parameters
source:DisplayObject — The DisplayObject from which the accessibility event is being sent.
| |
childID:uint — The child ID of the accessibility interface element to which the event applies
(for example, an individual list item in a list box). Use 0 to indicate that the event applies
to the DisplayObject supplied in the source parameter.
| |
eventType:uint — A constant indicating the event type. Event names and values are a subset
of the MSAA event constants.
| |
nonHTML:Boolean (default = false )
|
See also
updateProperties | () | method |
public static function updateProperties():void
Language Version: | ActionScript 3.0 |
Runtime Versions: | Flash Player 9, AIR 1.0 |
Tells Flash Player to apply any accessibility changes made by using the DisplayObject.accessibilityProperties
property.
You need to call this method for your changes to take effect.
If you modify the accessibility properties for multiple objects, only one call to the
Accessibility.updateProperties()
method is necessary; multiple calls can result in
reduced performance and erroneous screen reader output.
If you change an image and want to update its accessible name, you could use the following ActionScript code:
if (my_displayObj.accProps == undefined ) { my_displayObj.accProps = new Object(); } my_displayObj.accProps.name = "Photo of Mount Rushmore"; Accessibility.updateProperties();
Throws
IllegalOperationError — Accessibility is not supported in this version of
Flash Player. Do not call the Accessibility.updateProperties() method
if the flash.system.Capabilities.hasAccessibility property is false .
|
See also
AccessibilityExample
,
CustomAccessibleButton
, CustomSimpleButton
, and
ButtonDisplayState
sample classes to create an accessibility-compliant
menu that works with most screen readers. The example carries out the following tasks:
- It traces the
Accessibility.active
property to determine whether a screen reader is currently active and the player is communicating with it. - If the
active
property returnstrue
, the example calls theupdateProperties()
method to apply the accessibility changes made to the buttons in this example. - The example calls the
flash.utils.setTimeout()
method, specifying that theupdateAccessibility()
closure method should be called after 2 seconds.
Note: Call setTimeout()
before checking Accessibility.active
to give Flash Player the 2 seconds it needs to connect to a screen reader if one is available.
If you do not supply a sufficient delay time, the setTimeout
call might return false
even if a screen reader is available.
The following example processes the Accessibility.updateProperties()
method only if the call to Accessibility.active
returns true
, which occurs
only if Flash Player is currently connected to an active screen reader. If updateProperties
is called without an active screen reader, it throws an IllegalOperationError
exception.
package { import flash.display.Sprite; import flash.accessibility.Accessibility; import flash.utils.setTimeout; public class AccessibilityExample extends Sprite { public static const BUTTON_WIDTH:uint = 90; public static const BUTTON_HEIGHT:uint = 20; private var gutter:uint = 5; private var menuLabels:Array = new Array("PROJECTS", "PORTFOLIO", "CONTACT"); private var menuDescriptions:Array = new Array("Learn more about our projects" , "See our portfolio" , "Get in touch with our team"); public function AccessibilityExample() { configureAssets(); setTimeout(updateAccessibility, 2000); } private function updateAccessibility():void { trace("Accessibility.active: " + Accessibility.active); if(Accessibility.active) { Accessibility.updateProperties(); } } private function configureAssets():void { var child:CustomAccessibleButton; for(var i:uint; i < menuLabels.length; i++) { child = new CustomAccessibleButton(); child.y = (numChildren * (BUTTON_HEIGHT + gutter)); child.setLabel(menuLabels[i]); child.setDescription(menuDescriptions[i]); addChild(child); } } } } import flash.accessibility.AccessibilityProperties; import flash.display.Shape; import flash.display.SimpleButton; import flash.display.Sprite; import flash.events.Event; import flash.text.TextFormat; import flash.text.TextField; class CustomAccessibleButton extends Sprite { private var button:SimpleButton; private var label:TextField; private var description:String; private var _name:String; public function CustomAccessibleButton(_width:uint = 0, _height:uint = 0) { _width = (_width == 0) ? AccessibilityExample.BUTTON_WIDTH : _width; _height = (_height == 0) ? AccessibilityExample.BUTTON_HEIGHT : _height; button = buildButton(_width, _height); label = buildLabel(_width, _height); addEventListener(Event.ADDED, addedHandler); } private function addedHandler(event:Event):void { trace("addedHandler: " + this._name); var accessProps:AccessibilityProperties = new AccessibilityProperties(); accessProps.name = this._name; accessProps.description = description; accessibilityProperties = accessProps; removeEventListener(Event.ADDED, addedHandler); } private function buildButton(_width:uint, _height:uint):SimpleButton { var child:SimpleButton = new CustomSimpleButton(_width, _height); addChild(child); return child; } private function buildLabel(_width:uint, _height:uint):TextField { var format:TextFormat = new TextFormat(); format.font = "Verdana"; format.size = 11; format.color = 0xFFFFFF; format.align = TextFormatAlign.CENTER; format.bold = true; var child:TextField = new TextField(); child.y = 1; child.width = _width; child.height = _height; child.selectable = false; child.defaultTextFormat = format; child.mouseEnabled = false; addChild(child); return child; } public function setLabel(text:String):void { label.text = text; this._name = text; } public function setDescription(text:String):void { description = text; } } class CustomSimpleButton extends SimpleButton { private var upColor:uint = 0xFFCC00; private var overColor:uint = 0xCCFF00; private var downColor:uint = 0x00CCFF; public function CustomSimpleButton(_width:uint, _height:uint) { downState = new ButtonDisplayState(downColor, _width, _height); overState = new ButtonDisplayState(overColor, _width, _height); upState = new ButtonDisplayState(upColor, _width, _height); hitTestState = new ButtonDisplayState(upColor, _width, _height); useHandCursor = true; } } class ButtonDisplayState extends Shape { private var bgColor:uint; private var _width:uint; private var _height:uint; public function ButtonDisplayState(bgColor:uint, _width:uint, _height:uint) { this.bgColor = bgColor; this._width = _width; this._height = _height; draw(); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, _width, _height); graphics.endFill(); } }
Fri Mar 19 2010, 02:45 AM -07:00