Bonjour,
Préambule:
Ceci n'est pas une question , mais bien une constation, donc je poste un sujet ici, car cela aura l'avantage d'etre correctement référencé, pour ceux qui comme moi tombe sur ce bug.
Observation:
Lorsque l'on créer dynamiquement plusieurs objects interactifs avec les meme coordonnées ont observe un comportement qui peut laissé perplexe.
Si l'on ajoute sur le focus event un setchilInde(evt.target,containeur.numchildren-1);
Test 1, on parcours les élément avec la tabulation.
resultat normal, les objets interactifs passe succéssivement les uns sur les autres
Test 2, on ajoute sur le mouse-down un startDrag() et sur le mouse-up un stopDrag().
Resultat normal, lors du clic l objet interactif ciblé passe sur les autres.
Test 3, on efectue un seul drag, puis on parcours les élément avec la tabulation.
Resultat qui peut déconcerté:
on obtient une alternance de focus entre l'objet précédemment dragé et l'un des autres.
Conséquence:
J'ai perdu 1 journée et demi a comprendre d'ou venais le pb, a savoir une possible interaction malheureuse dans les events, une erreur dans le code, ... Mais en fait pas du tout.
Cause:
La logique de fonctionnement du focus à la tabulation.
En effet, celle-ci répond a ces 2 règles:
1> l'ordre de tabulation par défaut est déterminée par la position des objets interactifs dans la page(la scène).
2> l'ordre de tabulation par défaut est déterminée par l'ordre d'ajout sur la scéne si les position sont identique.
Or il peut arrivée comme dans mon cas de figure (Test3),que les 2 règles interfèrent.
Solution:
Ne jamais avoir d'ojets interactif aux meme coordonnées.
Mais si l'on veut avoir les possibilités:
_ de créer dynamiquement les objets
_de déplacer les objets,
il y a de forte chance pour qu'ils puissent avoir les meme coordonées.
Du coup il faudra obligatoirement indiquer un Index a chaque objet.
La contrainte sera alors déplacer sur la gestion des index surtout si ces objets interactifs en contiennent d'autres.
Merci a vous