#009 ActionScript [Q] Tips: controla tu foco en AS3

Ya sábado y sin poner el tip correspondiente… una semana complicada creedme…

En AS2 disponíamos de la clase Selection con sus métodos getFocus y setFocus que nos permitían controlar el cambio de Foco o elegir a quién queríamos dárselo, en AS3 se simplifica el proceso con la propiedad focus de stage (aplicable sobre cualquier InteractiveObject), y por otro lado tenemos la clase FocusManager para todos los componentes que implementan la IFocusManagerComponent.

Si lo que queremos es simplemente respetar un orden, podemos trabajar sobre los tabIndex de los elementos en pantalla (sean elementos normales o componentes, y que se mantiene desde AS2), de tal manera que empezando en 1 y dando sucesivos valores, tengamos el orden deseado. Con esto controlamos la transición de uno a otro mediante tabulador.

Para los que huyen del código, otra manera de darles el orden de tabulación es con el desconocido panel Accesibilidad de Flash que se encuentra en Window > Other Panels > Accesibility, donde cuando selecionamos un elemento podemos asignarle un tabIndex manualmente. El resultado es el mismo que el trabajo por código con tabIndex.

Flash, control de foco en AS3

Para preparar el foco en el elemento que desamos inicialmente (por ejemplo el primer campo del formulario) simplemente tenemos que hacer:

stage.focus = nombreElemento;

Simple, ¿no?, bastante mejor que en AS2.

Si trabajaramos sobre componentes, sin duda sería mucho más interesante emplear el mencionado FocusManager ya que nos permite tener un control mucho más detallado sobre los focos, relativos incluso al componente que lo emplea, eventos derivados del foco, conocimiento sobre el siguiente elemento a tomar el foco desde la perspectiva del componente actual, etc.

Tags