2010-12-16 8 views
2

Flash CS5フォームにTextAreasがいくつかあり、ユーザーがフォーム上の別の場所をクリックした場合、最後に選択したTextAreaからフォーカスを削除します。これどうやってするの?あなたの段階を想定しAS3のTextAreaからフォーカスを削除する

答えて

2

は、フォームです:

function setEventListeners():void 
    { 
    stage.addEventListener(MouseEvent.CLICK, mouseUpEventHandler); 
    } 

function mouseUpEventHandler(evt:MouseEvent):void 
    { 
    if (!evt.bubbles) 
     stage.focus = null; 
    } 

そうでない場合は、その子としてテキストフィールドの代わりに、段階を持つフォームオブジェクトにイベントリスナーを追加します。

0

最後のTextFieldがいつクリックされたかを知るには、何らかの形式の識別子が必要です。これにより、条件付きの設定が可能になります。

私がここで示している例は、フォーカスを扱っているだけでなく、フィールドのtabIndexもリセットしています。これは、投稿がキャンセルされた場合に便利です。&ユーザーがフィールド間をナビゲートするためにTABを使用している場合のフォーム。

 //This Vector will hold your TextFields 
    private var fields:Vector.<TextField>; 
    private var fieldsDisabled:Boolean; 

    private function clickHandler(event:MouseEvent):void 
    { 
     if(event.currentTarget.name == "Last") 
     { 
      enableTabs(false); 
      fieldsDisabled == true; 

     } else if (fieldsDisabled) 
     { 
      enableTabs(true); 
      fieldsDisabled == false; 
     } 
    } 

    private function enableTabs(enabled:Boolean):void 
    { 
     //provided the fields Vector has been populated... 
     for(var i:int ; i < fields.length ; ++i) 
       fields[i].tabEnabled = enabled; 
    } 
関連する問題