Flash CS4 Professional ActionScript 2.0

Utilisation de Focus Manager

Le gestionnaire de focus n'affecte pas automatiquement le focus à un composant. Si vous souhaitez qu'un composant reçoive le focus lors du chargement d'une application, vous devez écrire un script qui appelle FocusManager.setFocus() sur un composant.

REMARQUE

 

Si vous appelez FocusManager.setFocus() pour attribuer le focus à un composant au chargement d'une application, le cercle du focus n'apparaît pas autour de ce composant. Le composant a le focus, mais l'indicateur n'est pas présent.

Pour créer une navigation de focus dans une application, définissez la propriété tabIndex sur tous les objets (y compris les boutons) qui doivent recevoir le focus. Lorsqu'un utilisateur appuie sur la touche de tabulation, Focus Manager recherche un objet activé pourvu d'une propriété tabIndex supérieure à la valeur actuelle de tabIndex. Dès qu'il a atteint la propriété tabIndex la plus élevée, il retombe à zéro. Dans l'exemple suivant, le focus est d'abord attribué à l'objet comment (probablement un composant TextArea), puis à l'objet okButton :

comment.tabIndex = 1;
okButton.tabIndex = 2;

Vous pouvez également utiliser le panneau Accessibilité pour affecter une valeur d'indexation.

Si aucune valeur d'indexation n'est définie sur la scène, Focus Manager utilise la profondeur (ordre d'empilement ou ordre z). La profondeur est configurée au départ par l'ordre dans lequel les composants sont placés sur la scène. Vous pouvez néanmoins utiliser les commandes Modifier > Réorganiser > Premier plan/Arrière-plan pour déterminer la profondeur finale.

Pour créer un bouton recevant le focus lorsque l'utilisateur appuie sur Entrée (Windows) ou sur Retour (Macintosh), définissez la propriété FocusManager.defaultPushButton sur le nom d'occurrence du bouton souhaité, comme indiqué dans le code suivant :

focusManager.defaultPushButton = okButton;

REMARQUE

 

Focus Manager tient compte de l'ordre de placement des objets sur la scène (leur ordre de profondeur) et non de leur position relative sur la scène. Cette particularité de traitement des tabulations le distingue de Flash Player.

Rubriques connexes

Utilisation de Focus Manager pour autoriser la tabulation

Le gestionnaire de focus vous permet de créer un programme qui autorise l'utilisateur à parcourir les divers objets d'une application Flash en appuyant sur la touche de tabulation. (Les objets de ce programme de tabulation sont appelés cibles de tabulation.) Focus Manager examine les propriétés tabEnabled et tabChildren des parents des objets pour localiser ces derniers.

Un clip peut être un conteneur de cibles de tabulation, une cible de tabulation ou ni l'un ni l'autre :

Type de clip

tabEnabled

tabChildren

Conteneur de cibles de tabulation

false

true

Cible de tabulation

true

false

Aucun des deux

false

false

REMARQUE

 

Ce comportement diffère de celui de Flash Player, dans lequel la propriété tabChildren d'un conteneur peut être undefined.

Imaginons la situation suivante. La scène du scénario principal présente deux champs de texte (txt1 et txt2) et un clip (mc) contenant un composant DataGrid (grid1) et un autre champ de texte (txt3). Vous pourriez dans ce cas utiliser le code suivant pour permettre aux utilisateurs d'appuyer sur la touche de tabulation et parcourir les objets dans l'ordre txt1, txt2, grid1, txt3.

REMARQUE

 

Les occurrences de FocusManager et de TextField sont activées par défaut.

// Focus Manager apprend que mc a des enfants.
// Ecrasement de mc.focusEnabled=true
mc.tabChildren=true; 
mc.tabEnabled=false;
// Définition de la séquence de tabulation.
txt1.tabIndex = 1;
txt2.tabIndex = 2;
mc.grid1.tabIndex = 3;
mc.txt3.tabIndex = 4;

// Définition du focus initial sur txt1.
txt1.text = "focus";
focusManager.setFocus(txt1);

Si votre clip ne possède pas de méthode onPress ni onRelease ni de propriété tabEnabled, Focus Manager ne le verra que si vous définissez focusEnabled sur true. Les champs de saisie de texte sont toujours dans le programme de tabulation, sauf s'ils sont désactivés.

Lorsqu'une application Flash s'exécute dans un navigateur Web, elle n'a pas le focus tant que l'utilisateur n'a pas cliqué en un endroit quelconque de l'application. De même, dès que l'utilisateur y a cliqué, un appui sur la touche de tabulation peut faire passer le focus à l'extérieur de l'application Flash. Pour cantonner la tabulation aux objets de l'application Flash, dans le contrôle ActiveX de Flash Player 7, ajoutez le paramètre suivant à la balise HTML <object> :

<param name="SeamlessTabbing" value="false"/>