从AS3中的TextArea中移除焦点

问题描述:

我在Flash CS5表单中有几个TextAreas,如果用户在窗体上的其他位置单击,我想从最后选定的TextArea中移除焦点。我怎样才能做到这一点?从AS3中的TextArea中移除焦点

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

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

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

否则,事件侦听器添加到具有文本框为孩子而舞台表单对象。

您需要某种形式的标识符才能知道上次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; 
    }