12
votes

GetElementyid équivalent dans ActionScript?

Je veux accéder dynamiquement à un tas d'objets dans mon MXML. Je peux construire leur nom / id. Dans JavaScript, je peux faire getElementyid (id) pour obtenir l'objet. Comment puis-je faire cela dans ActionScript ?

Je ne peux vraiment pas faire getchildbyname car il est trop lourd: j'ai accès à un objet A, qui a un enfant B, qui a un enfant C, qui ont les enfants d, e & F (leurs noms sont liés à un nom de A). Je veux obtenir d, e & F. pour getchildbyname , il semble que je dois utiliser A pour obtenir b, puis obtenir c, puis obtenir d, e & f. et si ajouter un nouveau parent Pour B (changer la hiérarchie MXML), le code va casser ... et je ne veux vraiment pas faire cela.

Des conseils? Thx!

Mise à jour: Qu'est-ce que je demande, comment puis-je accéder à l'objet d donné son nom et / ou son identifiant, qui sont tous deux des chaînes.


0 commentaires

5 Réponses :


0
votes

Si vous utilisez MXML, vous devez utiliser Flex. Si vous utilisez Flex, vous pouvez affecter les identifiants d'éléments.

Exemple: P>

<mx:Button
      id    = "myButton"
      label = "OK"
      click = "{myLabel.text = 'Button Pressed!'}"/>

<mx:Label
      id    = "myLabel"
      text  = "Push the button!"/>


1 commentaires

Remarque: ce qui précède est équivalent à dire: var mybutton: bouton = nouveau bouton (); Lorsque vous donnez un composant MXML un identifiant, vous faites vraiment une variable ActionScript



19
votes

Étant donné que les enfants sont réellement comme des "propriétés" du document, vous devriez être capable de faire quelque chose comme ceci:

var elem: type_of_e = ceci ["construire_id_of_f_e"];

Si vous êtes dans un sous-document du document, utilisez simplement parentdocument ["construire_id_of_f_e"] pour obtenir l'élément.


2 commentaires

Merci! Exactement ce que je cherchais!


@Cristian Ivascu Nice sur IMC :)



2
votes

En fait, une fois que vous leur attribuez un identifiant, ils deviennent une variable de membre public de l'élément donné. Donc, par exemple, si vous avez

myLabel.text = "Hello world!";


0 commentaires

1
votes

Est-ce que cela fonctionne avec Flex 4?

J'ai une grille vide faite dans MXML, puis dans ActionScript I Ajouter dans cet ordre:

  • un gridrow (à l'intérieur de la grille) (id = "myGrid")
  • un griditem (à l'intérieur du gridrow)
  • Un ComboBox (à l'intérieur du griditem) avec un identifiant généré de manière dynamique (comme "CMB" + I où je suis un entier).

    J'ai essayé ceci ["CMB" +0], myGrid ["cmB" +0], parentdocument ["CMB" +0] et chaque fois que je reçois "RéférenceError: erreur # 1069 : Propriété CMB0 introuvable sur les adminiseurs et il n'y a pas de valeur par défaut " Ou "RéférenceError: Erreur # 1069: Propriété CMB0 introuvable sur mx.containers.grid et il n'y a pas de valeur par défaut"

    Remarque: "Adminutilisateurs" est le nom de mon application

    EDIT: Si cela peut aider quelqu'un, j'ai résolu mon problème une manière différente. Maintenant, je remplis ma grille avec un répéteur xxx

    maintenant je peux accéder à mes combos dans une boucle avec quelque chose comme: xxx

    :)


0 commentaires

1
votes

Vous pouvez utiliser getchDildname ("enfantName")


0 commentaires