パッケージflash.accessibility
クラスpublic final class Accessibility
継承Accessibility Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

Accessibility クラスは、スクリーンリーダーとの通信を管理します。スクリーンリーダーは、視覚障害のあるユーザー向けに、画面の内容を音声で出力する補助技術です。Accessibility クラスのメソッドは静的です。つまり、クラスのインスタンスを作成しなくても、このクラスのメソッドを使うことができます。

ボタンやムービークリップ、テキストフィールドなど、特定のオブジェクトのアクセシビリティプロパティを取得または設定するには、DisplayObject.accessibilityProperties プロパティを使用します。Player がアクセシビリティ補助をサポートする環境で実行されているかどうかを確認するには、Capabilities.hasAccessibility プロパティを使用します。

例を表示

関連項目

flash.display.DisplayObject.accessibilityProperties
flash.system.Capabilities.hasAccessibility
Socket


パブリックプロパティ
 プロパティ定義元
  active : Boolean
[静的] [読み取り専用] スクリーンリーダーが現在アクティブ状態で、Player と通信しているかどうかを示します。
Accessibility
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義元
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
  
[静的] DisplayObject.accessibilityProperties プロパティを使って変更されたアクセシビリティをすべて Flash Player に適用させます。
Accessibility
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
activeプロパティ
active:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

スクリーンリーダーが現在アクティブ状態で、Player と通信しているかどうかを示します。スクリーンリーダーの実行時にアプリケーションの動作を変更するには、このメソッドを使用します。

注意:ドキュメントを再生する Flash® ウィンドウが最初に表示された後、このメソッドを 1、2 秒以内に呼び出すと、アクティブ状態のアクセシビリティクライアントが存在しても、false 値が返されることがあります。 これは、Flash とアクセシビリティクライアントとの間の通信が非同期であるために発生します。この問題を回避するには、ドキュメントを読み込んだ後、必ず 1、2 秒経過してから、このメソッドを呼び出してください。

スクリーンリーダーをサポートする環境で Player が実行されているかどうか確認するには、Capabilities.hasAccessibility プロパティを使用します。



実装
    public static function get active():Boolean

関連項目

メソッドの詳細
updateProperties()メソッド
public static function updateProperties():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

DisplayObject.accessibilityProperties プロパティを使って変更されたアクセシビリティをすべて Flash Player に適用させます。変更内容を有効にするには、このメソッドを呼び出す必要があります。

複数のオブジェクトのアクセシビリティプロパティを変更する場合、必要な Accessibility.updateProperties() メソッド呼び出しは 1 回だけです。何度も呼び出すと、パフォーマンスが低下するだけでなく、スクリーンリーダーが誤った出力を生成する可能性があります。


例外
IllegalOperationError — Flash Player のこのバージョンではアクセシビリティがサポートされません。Accessibility.updateProperties() メソッドは、flash.system.Capabilities.hasAccessibility プロパティが false の場合は呼び出さないでください。

関連項目

例の使用法
AccessibilityExample.as

次のコードの例では、AccessibilityExampleCustomAccessibleButtonCustomSimpleButton および ButtonDisplayState サンプルクラスを使用して、ほとんどのスクリーンリーダーとの連携が可能なアクセシビリティ準拠メニューを作成します。 この例では、次の処理を実行します。
  1. Accessibility.active プロパティを追跡し、スクリーンリーダーが現在アクティブ状態で、Player と通信しているかどうかを確認します。
  2. active プロパティが true を返す場合には、この例では updateProperties() メソッドを呼び出して、この例のボタンに対するアクセシビリティ上の変更を適用します。
  3. flash.utils.setTimeout() メソッドを呼び出して、updateAccessibility() クロージャーメソッドを 2 秒後に呼び出すように指定します。

注意:setTimeout() は、Accessibility.active の検査の前に呼び出してください。こうすれば、Flash Player がスクリーンリーダー(使用可能な場合)に接続するのに必要な 2 秒間を確保できます。 十分な遅延時間を指定しないと、スクリーンリーダーが使用可能であっても、setTimeout 呼び出しでは、false が返されます。

次の例で Accessibility.updateProperties() メソッドが処理されるのは Accessibility.active 呼び出しが true を返す場合だけです。つまり、Flash Player がアクティブ状態のスクリーンリーダーに現在接続している場合だけです。 updateProperties が呼び出されたときにスクリーンリーダーがアクティブ状態でない場合、IllegalOperationError 例外がスローされます。

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();
    }
}