Wanneer de gebruiker op Tab drukt om te navigeren in een Flash-toepassing of in een toepassing klikt, bepaalt de klasse FocusManager welke component invoerfocus krijgt. U hoeft geen instantie FocusManager aan een toepassing toe te voegen of een code te schrijven om FocusManager te activeren, tenzij u een component maakt.
Als een RadioButton-object focus krijgt, worden dat object en alle objecten met dezelfde waarde voor
groupName
gecontroleerd door FocusManager en wordt focus ingesteld op het object waarvan de eigenschap
selected
is ingesteld op
true
.
Omdat elke modale venstercomponent een instantie van FocusManager bevat, fungeren de opties in een venster als de eigen tabverzameling. Zo wordt voorkomen dat de gebruiker per ongeluk met de toets Tab naar componenten in andere vensters navigeert.
FocusManager gebruikt het diepteniveau (of de
z
-volgorde) van elementen in de container als het standaardnavigatieschema (of de
tablus
). De gebruiker navigeert doorgaans door de tablus met Tab, waarbij de focus in stappen wordt verplaatst van de eerste component met focus naar de laatste en vervolgens weer terug naar de eerste. De diepteniveaus worden voornamelijk bepaald door de volgorde waarin componenten naar het werkgebied worden gesleept, maar u kunt ook de opdrachten Wijzigen > Rangschikken > Naar voorgrond/Naar achtergrond gebruiken om de uiteindelijke
z
-volgorde te bepalen. Zie
Werken met het weergaveoverzicht
voor meer informatie over diepteniveaus.
U kunt de methode
setFocus()
aanroepen om een componentinstantie in een toepassing focus te geven. In het volgende voorbeeld wordt een instantie FocusManager gemaakt voor de huidige container (
this
) en wordt focus gegeven aan de Button-instantie
aButton
.
var fm:FocusManager = new FocusManager(this);
fm.setFocus(aButton);
U kunt bepalen welke component focus heeft door de methode
getFocus()
aan te roepen en u kunt bepalen welke component in de tablus als volgende focus zal krijgen door de methode
getNextFocusManagerComponent()
aan te roepen. In het volgende voorbeeld bevat het werkgebied een CheckBox, een RadioButton en een Button en heeft elke component listeners voor gebeurtenissen
MouseEvent.CLICK
en
FocusEvent.MOUSE_FOCUS_CHANGE
. Wanneer de gebeurtenis
MouseEvent.CLICK
optreedt omdat de gebruiker op de component heeft geklikt, roept de functie
showFocus()
de methode
getNextFocusManagerComponent()
aan om te bepalen welke component in de tablus als volgende focus krijgt. Vervolgens roept deze de methode
setFocus()
aan om die componentinstantie focus te geven. Wanneer de gebeurtenis
FocusEvent.MOUSE_FOCUS_CHANGE
optreedt, geeft de functie
fc()
de naam van de component weer waarin deze gebeurtenis is opgetreden. Deze gebeurtenis wordt geactiveerd wanneer de gebruiker op een andere component dan de volgende in de tablus klikt.
// This example assumes a CheckBox (aCh), a RadioButton (aRb) and a Button
// (aButton) have been placed on the Stage.
import fl.managers.FocusManager;
import flash.display.InteractiveObject;
var fm:FocusManager = new FocusManager(this);
aCh.addEventListener(MouseEvent.CLICK, showFocus);
aRb.addEventListener(MouseEvent.CLICK, showFocus);
aButton.addEventListener(MouseEvent.CLICK, showFocus);
aCh.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, fc);
aRb.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, fc);
aButton.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, fc);
function showFocus(event:MouseEvent):void {
var nextComponent:InteractiveObject = fm.getNextFocusManagerComponent();
trace("Next component in tab loop is: " + nextComponent.name);
fm.setFocus(nextComponent);
}
function fc(fe:FocusEvent):void {
trace("Focus Change: " + fe.target.name);
}
Als u een knop wilt maken die focus krijgt wanneer de gebruiker op Enter (Windows) of Return (Macintosh) drukt, stelt u de eigenschap
FocusManager.defaultButton
in op de instantie Button die u als standaardknop wilt gebruiken, zoals in de volgende code:
import fl.managers.FocusManager;
var fm:FocusManager = new FocusManager(this);
fm.defaultButton = okButton;
De klasse FocusManager overschrijft de standaardfocusrechthoek van Flash Player en tekent een aangepaste focusrechthoek met ronde hoeken.
Zie voor meer informatie over het maken van een focusschema in een Flash-toepassing de klasse
FocusManager
in de
Naslaggids voor ActionScript 3.0
voor Flash Professional
. Als u een aangepaste focusmanager wilt maken, moet u een klasse maken waarmee de interface
IFocusManager
wordt geïmplementeerd. Raadpleeg
IFocusManager
in de
Naslaggids voor ActionScript 3.0
voor Flash Professional
voor meer informatie.