Удалить фокус с TextArea в AS3 - PullRequest
2 голосов
/ 16 декабря 2010

У меня есть несколько TextAreas в форме Flash CS5, и я хочу удалить фокус из последней выбранной TextArea, если пользователь щелкнет в другом месте формы. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 16 декабря 2010

при условии, что ваша сцена - это ваша форма:

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

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

в противном случае добавьте прослушиватель событий к объекту формы, который имеет textFields в качестве дочерних элементов вместо сцены.

0 голосов
/ 16 декабря 2010

Вам понадобится некоторая форма идентификатора, чтобы знать, когда был нажат последний элемент 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;
     }
...