从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;
}