[ActionScript / Flash MX] Atteindre des objects à des niveaux inférieurs

fissunix

Membre actif
12 Avril 2004
290
17
41
Fribourg (CH)
www.contesse.ch
Hello tout le monde,

Je fais un peu joujou avec Flash ces derniers temps et je cherche le moyen de créer des boutons à la volée en utilisant ActionScript. En utilisant "duplicateMovieClip" j'en ai vite déduit que l'on pouvait uniquement dupliquer des clips. C'est pourquoi j'ai placé mon bouton à copier dans un clip, jusque là pas de problème. Maintenant je voudrais atteindre une zone de texte dynamique nommée "text0" qui se trouve dans mon bouton (qui lui est à l'intérieur de mon clip qui va être copier, vous me suivez ?). Voici mon code:

Bloc de code:
clpBtnDefault.duplicateMovieClip("clpBtnPresentation",1);
clpBtnPresentation._x = 5.0;     // Positionnement en X
clpBtnPresentation._y = -280.0;  // Positionnement en Y
clpBtnPresentation.btn.text0.text = "Présentation"; // Affectation du texte

Mon bouton se copie parfaitement, mais avec le débugger je vois que je n'arrive pas à atteindre les éléments qui sont 1 niveau inférieur, c'est-à-dire dans le bouton: clpBtnPresentation.btn.text0.text. Le clip clpBtnPresentation se déplace bien avec la ligne clpBtnPresentation._x .

Quelqu'un peut-il m'aider à dire à ce fichu bouton de s'attributer le bon texte !?

Merci
 
Salut.

As-tu bien vérifié les noms d'occurences de tes boutons, movieclips et objets textes ? Au passage, je te conseille d'adopter certaines normes de nommage des occurences d'objets : les suffixes "_mc" pour les movieClips, "_btn" pour les boutons, "_txt" pour les textes, ça aide à s'y retrouver, et tu verras que lorsque tu tapes ton code, Flash ne va te proposer en menu contextuel que les actions qui correspondent à l'objet dont tu viens de saisir le nom.

Il se peut que tu ne puisses pas modifier comme ça le texte dans un bouton. Mais tu peux mettre le texte dans ton movieClip au-dessus du bouton pour avoir la structure suivante :

clpBtnPresentation_mc.zoneSensible_btn
clpBtnPresentation_mc.texte0_txt.text
 
  • J’aime
Réactions: fissunix
Tout d'abord un grand merci pour ta réponse très claire. J'ai pu corrigé mes noms d'instances, je me basais plus sur mon expérience Java pour attribuer des noms sans savoir que la "complétation" de syntaxe dépendait des suffix _mc, _txt, ... merci beacoup pour cette astuce qui permet d'éviter un bon nombre d'erreurs.

J'ai donc été obligé de déplacer mes labels de bouton dans le movie clip pour que je puisse les atteindre et j'en déduis donc qu'il n'est pas possible d'atteindre les propriétés/méthodes d'un object instancié dans un autre.

P.S. Un grand bravo pour ton site qui démontre la maîtrise que tu as du sujet ;)
 
Hello,

J'ai presque terminé la partie Flash et je m'aperçois que les liens que j'ai utilisé dans des champs de textes dynamiques n'ont pas le curseur qui changent à leur survol. Je me retrouve donc avec le pointeur noir au lieu de la main et cela seleuement sur Mac. Est-ce que quelqu'un à une petite astuce pour corriger cela ? Les Flash Player ne sont-ils pas tous identiques sur toutes les plateformes ?

Merci
 
J'ai effectivement déjà vu ce problème, mais je n'ai pas de solution.

Si ces textes dynamiques ne sont que des intitulés de boutons, tu peux mettre un bouton, même invisible avec juste un rectangle dans sa 4e image-clé qui défini la zone sensible, dessous le texte, et y affecter ton lien. Ça changera le curseur comme il faut.

Sinon tu peux toujours poser des questions sur un forum spécialisé Flash, comme flashxpress, tu devrais pouvoir y résoudre tous tes soucis.
 
Bonjour,

J'ai encore une question concernant un objet que j'aimerais atteindre...

Voilà, je crée dynamiquement un nombre X de clip. Comment fais-je pour atteindre leur propriété (_x en particuliers) après coup ?

J'essaie avec le code suivant mais rien à faire :


Bloc de code:
for(i=0; i<6; i++) {
  conteneur_mc.clip[i]._x+= 10; // Je ne connais pas la syntaxe pour utiliser ma variable i dans un nom d'objet, est-ce possible ?
}