パッケージfl.managers
クラスpublic class FocusManager
継承FocusManager Inheritance Object
実装 IFocusManager

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

FocusManager クラスは、マウスまたはキーボードによりタブループとして移動される一連のコンポーネントのフォーカスを管理します。

タブループは一般に、Tab キーを使って移動されます。フォーカスは、タブループ内のコンポーネント間を、フォーカスがある最初のコンポーネントから最後のコンポーネントへ、そしてまた最初のコンポーネントへと、循環するパターンで移動します。タブループには、コンテナ内のすべてのコンポーネントおよびタブが有効なコンポーネントが含まれています。アプリケーションには、数多くのタブループを含めることができます。

1 つの FocusManager インスタンスが、1 つのタブループを管理します。メインアプリケーションは常に、少なくとも 1 つの FocusManager インスタンスと関連付けられていますが、アプリケーションでは、その中の各タブループの管理に別々の FocusManager インスタンスを使用します。アプリケーションに、例えばコンポーネントからなるタブループを別途含んでいるポップアップウィンドウなどがある場合は、さらに FocusManager インスタンスが必要となることがあります。

FocusManager インスタンスによって管理可能なコンポーネントはすべて、fl.managers.IFocusManagerComponent インターフェイスが実装されている必要があります。Flash Player がフォーカスを管理しているオブジェクトには、IFocusManagerComponent インターフェイスの実装は必要ありません。

FocusManager クラスは、デフォルトボタンの実装方法も管理します。デフォルトボタンは、フォーム上で Enter キーが押されると、そのときフォーカスがどこにあるかに応じて、click イベントを送出します。デフォルトボタンは、テキストエリアにフォーカスがある場合、または ComboBox や NumericStepper コンポーネントなどのコンポーネント内で値が編集されている場合には、click イベントを送出しません。

例を表示

関連項目

IFocusManager
IFocusManagerComponent


パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  defaultButton : Button
現在のデフォルトボタンを取得または設定します。
FocusManager
  defaultButtonEnabled : Boolean
デフォルトのボタンが有効かどうかを示す値を取得または設定します。
FocusManager
  nextTabIndex : int
[読み取り専用] このタブループで次に使用する固有のタブインデックスを取得します。
FocusManager
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  showFocusIndicator : Boolean
フォーカスのあるコンポーネントをフォーカスの可視インジケータでマークするかどうかを示す値を取得または設定します。
FocusManager
パブリックメソッド
 メソッド定義元
  
新しい FocusManager インスタンスを作成します。
FocusManager
  
FocusManager インスタンスをアクティブにします。
FocusManager
  
FocusManager を非アクティブ化します。
FocusManager
  
指定されたオブジェクトが含まれているインタラクティブオブジェクト (存在する場合) を取得します。
FocusManager
  
現在フォーカスを持っているインタラクティブオブジェクトを取得します。
FocusManager
  
ユーザーが Tab キーを押して次のオブジェクトに移動すると、フォーカスを受け取るインタラクティブオブジェクトを取得します。
FocusManager
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
  
showFocusIndicator 値を false に設定し、フォーカスがあるオブジェクト (存在する場合) から可視のフォーカスインジケータを削除します。
FocusManager
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
  
フォーカスを IFocusManagerComponent コンポーネントに設定します。
FocusManager
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
showFocusIndicator 値を true に設定し、フォーカスがあるオブジェクト (存在する場合) に可視のフォーカスインジケータを描画します。
FocusManager
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
defaultButtonプロパティ
defaultButton:Button  [読み書き可能]

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

現在のデフォルトボタンを取得または設定します。

デフォルトボタンは、Enter キーが押されると、そのときフォーカスがどこにあるかに応じて click イベントを送出する、フォーム上のボタンです。



実装
    public function get defaultButton():Button
    public function set defaultButton(value:Button):void
defaultButtonEnabledプロパティ 
defaultButtonEnabled:Boolean  [読み書き可能]

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

デフォルトのボタンが有効かどうかを示す値を取得または設定します。この値が true に設定されていると、フォーカスマネージャは Enter キーを監視して、ボタンコンポーネント以外のコンポーネントにフォーカスがあるときに Enter キーが押された場合に、デフォルトボタンに対して click イベントを送出します。 この値が false に設定されていると、フォーカスマネージャは Enter キーを監視しません。 Enter キーを使用するコンポーネントでは、このプロパティを false に設定して、ユーザーが Enter キーを押したときにデフォルトのボタン (存在する場合) に対して click イベントが送出されることを回避します。



実装
    public function get defaultButtonEnabled():Boolean
    public function set defaultButtonEnabled(value:Boolean):void
nextTabIndexプロパティ 
nextTabIndex:int  [読み取り専用]

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

このタブループで次に使用する固有のタブインデックスを取得します。



実装
    public function get nextTabIndex():int
showFocusIndicatorプロパティ 
showFocusIndicator:Boolean  [読み書き可能]

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

フォーカスのあるコンポーネントをフォーカスの可視インジケータでマークするかどうかを示す値を取得または設定します。



実装
    public function get showFocusIndicator():Boolean
    public function set showFocusIndicator(value:Boolean):void
コンストラクタの詳細
FocusManager()コンストラクタ
public function FocusManager(container:DisplayObjectContainer)

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

新しい FocusManager インスタンスを作成します。

フォーカスマネージャは、DisplayObjectContainer オブジェクトの子の中でフォーカスを管理します。

パラメータ
container:DisplayObjectContainer — フォーカスマネージャをホストする DisplayObjectContainer または stage です。
メソッドの詳細
activate()メソッド
public function activate():void

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

FocusManager インスタンスをアクティブにします。

FocusManager インスタンスは、イベントハンドラを追加して、フォーカスに関連したキーボード操作とマウス操作を監視できるようにします。

deactivate()メソッド 
public function deactivate():void

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

FocusManager を非アクティブ化します。

FocusManager では、フォーカスに関連するキーボードやマウスの操作を監視できるイベントハンドラを削除します。

findFocusManagerComponent()メソッド 
public function findFocusManagerComponent(component:InteractiveObject):InteractiveObject

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

指定されたオブジェクトが含まれているインタラクティブオブジェクト (存在する場合) を取得します。プレーヤーでは Flash コンポーネントのサブコンポーネントにフォーカスを設定できます。このメソッドでは、コンポーネント側から見てどのインタラクティブオブジェクトにフォーカスがあるかを判別します。

パラメータ

component:InteractiveObject — プレーヤーレベルのフォーカスを取得できるオブジェクトです。

戻り値
InteractiveObjectcomponent を含んでいるオブジェクト、または、それが見つからなかった場合は、component 自体です。
getFocus()メソッド 
public function getFocus():InteractiveObject

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

現在フォーカスを持っているインタラクティブオブジェクトを取得します。このメソッドを呼び出すと、どのコンポーネントにフォーカスがあるかが示されるので、Stage オブジェクトよりもこのメソッドを使用することをお勧めします。Stage オブジェクトは、該当コンポーネント内のサブコンポーネントを返す場合があります。

戻り値
InteractiveObject — 現在フォーカスがあるインタラクティブなオブジェクト。
getNextFocusManagerComponent()メソッド 
public function getNextFocusManagerComponent(backward:Boolean = false):InteractiveObject

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

ユーザーが Tab キーを押して次のオブジェクトに移動すると、フォーカスを受け取るインタラクティブオブジェクトを取得します。このメソッドは、アプリケーション内に他に有効なオブジェクトがなければ、現在フォーカスを持っているオブジェクトを取得します。

パラメータ

backward:Boolean (default = false) — このパラメータが true に設定されている場合、フォーカスは後方に移動し、それによりこのメソッドは、Shift + Tab キーが押されると次にフォーカスを受け取るオブジェクトを取得します。

戻り値
InteractiveObject — フォーカスを次に受け取るコンポーネントです。
hideFocus()メソッド 
public function hideFocus():void

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

showFocusIndicator 値を false に設定し、フォーカスがあるオブジェクト (存在する場合) から可視のフォーカスインジケータを削除します。

setFocus()メソッド 
public function setFocus(component:InteractiveObject):void

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

フォーカスを IFocusManagerComponent コンポーネントに設定します。このメソッドでは、コンポーネントの可視性、有効にされた状態またはその他の条件については、チェックされません。

パラメータ

component:InteractiveObject — フォーカスを取得できるオブジェクトです。

showFocus()メソッド 
public function showFocus():void

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

showFocusIndicator 値を true に設定し、フォーカスがあるオブジェクト (存在する場合) に可視のフォーカスインジケータを描画します。

例の使用法
FocusManagerExample.as

この例では、FocusManager クラスを使用して、ステージ上のコンポーネント間でフォーカスを変更する方法を説明します。

例を実行するには、次の手順に従います。

  1. TextInput コンポーネントをライブラリに追加します。
  2. このコードを FLA ファイルと同じディレクトリに FocusManagerExample.as という名前で保存します。
  3. FLA ファイル内の Document クラスを FocusManagerExample に設定します。
package
{
    import fl.controls.TextInput;
    import fl.managers.FocusManager;
    import flash.display.InteractiveObject;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.utils.Timer;

    public class FocusManagerExample extends Sprite 
    {
        private var fm:FocusManager;
        
        public function FocusManagerExample() {
            buildGridOfTextInputs();

            fm = new FocusManager(this);
            var t:Timer = new Timer(1000);
            t.addEventListener(TimerEvent.TIMER,secondPassed);
            t.start();
        }
        private function buildGridOfTextInputs():void {
            var rowSpacing:uint = 30;
            var colSpacing:uint = 110;
            var totalRows:uint = 4;
            var totalCols:uint = 3;
            var i:uint;
            
            for(i = 0; i < totalRows * totalCols; i++) {
                var ti:TextInput = new TextInput()
                ti.name = "component"+i.toString();
                ti.addEventListener(FocusEvent.FOCUS_IN,focusChange);
                ti.setSize(100,20);
                ti.x = 10 + ((i % totalCols) * colSpacing);
                ti.y = 10 + (Math.floor(i / totalCols) * rowSpacing);
                ti.tabEnabled = true;
                addChild(ti);
            }
        }
        private function secondPassed(e:TimerEvent):void {
            var nextComponent:InteractiveObject = fm.getNextFocusManagerComponent();
            fm.setFocus(nextComponent);    
        }
        
        private function focusChange(e:FocusEvent):void {
            trace("Focus change: " + e.target.name);
        }
    }
}