从AS3中的TextArea中删除焦点

时间:2010-12-16 01:57:21

标签: actionscript-3 textarea flash-cs5

我在Flash CS5表单中有一些TextAreas,如果用户单击表单上的其他位置,我想从上次选择的TextArea中删除焦点。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

假设你的舞台是你的形式:

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

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

否则,将事件侦听器添加到表单对象中,该表单对象将textFields作为子节点而不是舞台。

答案 1 :(得分: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;
     }