2010-11-19 3 views
0

J'ai un composant personnalisé avec deux champs de saisie de texte (entre autres) qui sont utilisés comme composants de ligne dans un arbre. J'ai dû écrire mon propre glisser-déposer, et j'ai presque fini le gestionnaire de démarrage (que j'ai fait en dernier), en utilisant mouseDown comme l'événement à lancer si off.Flex 3: déterminer si une cible d'événement est un descendant d'un composant

Cela fonctionne essentiellement, mais lorsque l'arborescence est suffisamment étendue pour qu'une barre de défilement s'affiche, l'utilisation de la barre de défilement entraîne une rangée de l'arbre en même temps! Pas le comportement désiré.

En regardant dans le débogueur, je peux voir que quand une ligne de l'arbre est déplacée, currentTarget est l'arbre lui-même, et la cible est le composant textInput. En regardant les parents de ce composant, je peux voir mon composant personnalisé (qui contient le textInput) un couple de niveaux.

Ma question est, est-il un moyen facile de déterminer si cette cible est descendue de mon composant, de sorte que je ne puisse initier un glisser que si c'est le cas? Event.target ne fonctionne pas au fait .... ce que je m'attendais, car ce n'est pas le cas!

Merci,

Mike

Répondre

1

Vous pouvez créer une interface 'marqueur' (à savoir un sans méthodes ou propriétés), puis demander

if (yourObject is IYourInterface) { 

dans votre code.

+0

Vous voulez donc créer une interface, puis faire en sorte que mon composant l'implémente? Ensuite, la cible de l'événement, qui est un sous-élément de mon composant, sera cette interface? – Nic

+0

Merci pour la réponse, au fait .... – Nic

+0

Yup. C'est une façon assez courante de faire les choses. –

1

Utilisez myComponent.contains(child).

P.S: Il renvoie également true lorsque myComponent == child.

Questions connexes