ドゥアイネットのプログラマー、湯川が開発日記を綴ります。

CALENDAR
S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< March 2019 >>
ARCHIVES
CATEGORIES
<< viエディッタ | main | 配色の考え方 >>
Imageコンポーネントにフォーカスセット
FlexのImageコンポーネントは、そのままではFocusを受け取ってくれないようです。
そこで、以下のように「IFocusManagerComponentImage」インターフェースを実装した、MyImageクラスを作成しました。

-------------------------------------------------------------------------------------------------
package common
{
  import mx.managers.IFocusManagerComponent;
  import mx.controls.Image;
  import flash.events.FocusEvent;
  
  public class MyImage extends Image implements IFocusManagerComponent
  {
    public function MyImage()
    {
      super();
     
      //デフォルトはフォーカスを受け取らないようにする
      focusEnabled = false;
    }

  // IFocusManagerComponentクラスの「focusEnabled」をoverrideして、
    // フォーカスを設定する
    override public function set focusEnabled(value:Boolean):void
    {
        super.focusEnabled = value;
       
        //Tabキーによるフォーカス取得を有効/無効にする
        super.tabEnabled = value;
       
        //マウス選択によるフォーカスの取得を有効/無効にする
        super.mouseFocusEnabled = value;
    }

    // 「focusInHandler」をoverrideして、フォーカス枠を描画する
    override protected function focusInHandler(event:FocusEvent) :void
    {
      super.focusInHandler(event);

      //フォーカスマネージャーが存在する場合
      if(super.focusManager != null)
      {
        //フォーカスインジケータ(フォーカス枠)を描画する
        super.focusManager.showFocus();
      }
    }  
  }
}
-------------------------------------------------------------------------------------------------

このMyImageクラスを使用して、focusEnabled = trueを設定することで、
フォーカスを受け取ることができるようになりました。





| Flex | 18:52 | comments(0) | - |
コメント
コメントする