2009-05-29 6 views
6

J'essaie d'ajouter une certaine accessibilité pour les lecteurs d'écran dans une application Flash, et je me heurte à un point sensible. L'ordre de tabulation des éléments est défini par la propriété tabIndex de ces éléments. La difficulté est, la liste d'onglets construite à partir de ceux-ci semble être permanente, mais le contenu de l'application est dynamique (construit à partir de xml, contient des pop-ups et des boîtes de dialogue). Y a-t-il un moyen d'actualiser/reconstruire la liste des onglets? Je suis prêt à aller très loin, et essayer des hacks fous pour faire ce travail, donc toutes les suggestions sont bonnes.Flash Tab Modifier les modifications

Répondre

4

vous définissez modifier les éléments tabIndex valeurs à tout moment

comme définissant des paramètres de même à childIndex

for (var i:int=0;i<container.numChildren;++i) { 
    container.getChildAt(i).tabIndex = i; //=i or anything you want 
} 

Les œuvres suivantes pour moi

iButton1.tabIndex = 1; 
iButton2.tabIndex = 2; 
iButton3.tabIndex = 3; 

iButton1.tabEnabled = true; 
iButton2.tabEnabled = true; 
iButton3.tabEnabled = true; 

function fnClick (pME:MouseEvent):void { 
    iButton1.tabIndex = 3; 
    iButton2.tabIndex = 2; 
    iButton3.tabIndex = 1; 
} 

iButton3.addEventListener(MouseEvent.CLICK, fnClick); 

vous pouvez télécharger un échantillon ici fla http://matrixoft.infunity.com/agents/calvin/flash/tab.rar

cliquez sur le troisième bouton et cela changera l'ordre des onglets. Vous pouvez avoir besoin de "Control-> Désactiver les raccourcis clavier" lorsque vous ctrl-entrer pour tester le fla

+0

modifié la réponse à fournir un échantillon – Unreality

+2

Votre échantillon m'a fait comprendre que je ne change pas réellement la TextArea tabIndex, mais le TextField dans la zone de texte. Je me sens bête, mais vous avez bien fait, merci^_^ – Zoe

+0

nous sommes tous confrontés à des bugs stupides similaires lors du codage flash :) il est rare de n'avoir aucun bug en une seule fois – Unreality

2

Je suis en train de compiler avec Flash Player 11.4 Passer la propriété tabEnabled du TextField est bien, mais je trouve que ça ne marche pas pour SimpleButtons (ils ne sont pas réactivés lors de la définition de tabEnabled sur true). Pour que j'utilise ceci:

private function setPanelOneTabIndices() 
{ 
    aButton1.tabIndex = 1; 
    aButton2.tabIndex = 2; 
    aButton3.tabIndex = 3; 

    bButton1.tabIndex = 0; 
    bButton2.tabIndex = 0; 
    bButton3.tabIndex = 0; 
} 

private function setPanelTwoTabIndices() 
{ 
    aButton1.tabIndex = 0; 
    aButton2.tabIndex = 0; 
    aButton3.tabIndex = 0; 

    bButton1.tabIndex = 1; 
    bButton2.tabIndex = 2; 
    bButton3.tabIndex = 3; 
}