valvincent
Messages postés8Date d'inscriptionlundi 20 avril 2009StatutMembreDernière intervention16 février 2009
-
12 févr. 2009 à 16:13
valvincent
Messages postés8Date d'inscriptionlundi 20 avril 2009StatutMembreDernière intervention16 février 2009
-
16 févr. 2009 à 10:08
Bonjour à tous,
Je rencontre un soucis sous Flash cs3 et j'aurais besoin de votre aide :
Je possède un plan où se situe des objets graphiques qui représentent des bâtiments, je les ai converti en symbole (MovieClip) et j'aimerais les faire interagir dans mon code AS3. J'ai une Main (.as) qui est la classe de définition de ma scène (plan.fla).
Pour se faire j'aimerais utilisé la méthode getChildByName() (sur ma Main), qui demande en paramètre le nom de l'objet à trouver... Le problème est que je n'ai aucune idée de ce à quoi correspond ce nom sur mon .fla.
Est-ce le nom d'occurrence ? Le nom du symbole dans la bibliothèque ? ; j'ai essayé les deux mais flash me retourne 'null' .
Voici un extrait de mon code :
var leNomBat:String;
// Récupère le nom du Batiment sélectionné dans la liste.
leNomBat=saveServiceSelect.getLeBatiment().getNomBatiment();
trace(leNomBat); // renvoie un String (exemple "B1A")
trace(this.getChildByName(leNomBat)); // affiche null
Ici, sur mon .fla j'ai un MovieClip portant le nom d'occurrence "B1A" et dont le nom de symbole est exactement le même. Pourtant getChildByName() me retourne 'null'. Ma question est : Est-ce que je dois créer une classe ayant pour nom "B1A" (et si c'est le cas j'en aurais une pour chaque bâtiment ; soit une vingtaine ) ? Où existe-t-il une autre méthode ?
Merci de m'avoir lu, j'ai essayé d'être le plus clair possible mais je ne sais pas vraiment comment poser le problème, alors soyez compréhensifs s'il vous plaît .
A voir également:
Peut-on attacher plusieurs MovieClip à une seule classe ? {AS3}
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 16 févr. 2009 à 09:33
Je te l'ai donnée dés le départ :
"La solution la plus simple serait que ce soit ta classe elle-même qui
place le movieClip sur la scène (sur elle-même, étant déjà sur la
scène). A ce moment-la, elle pourra les manipuler."
Et ce n'est pas du bricolage, l'externalisation de ta classe ne vaut que si tu utilises plusieurs classes externes, ce qui n'est pas le cas.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 12 févr. 2009 à 16:59
Bonjour,
Une classe Custom ne peut pas voir les éléments présents sur la bibliothèque à moins de les-lui passer en paramètre.
La solution la plus simple serait que ce soit ta classe elle-même qui place le movieClip sur la scène (sur elle-même, étant déjà sur la scène). A ce moment-la, elle pourra les manipuler.
Pour obtenir une occurence d'un movieClip de la bibliothèque dans ta classe, il suffit de faire :
valvincent
Messages postés8Date d'inscriptionlundi 20 avril 2009StatutMembreDernière intervention16 février 2009 12 févr. 2009 à 23:28
Bonsoir,
[QUOTE="pegase31"] La solution la plus simple serait que ce soit ta classe elle-même qui place le movieClip sur la scène /QUOTE
Le problème est qu'il s'agit de forme tracées à l'aide de l'outil plume et complètement ' difformes ' , donc quasiment impossible à générer par le code :s.
[QUOTE="pegase31"] var monClip:NomLiaison = new NomLiaison(); /QUOTE
Qu'est-ce que tu entend par 'NomLiaison' ?
Merci tout de même de la réponse ça m'a un peu éclairer sur le sujet, je vais continuer d'y réfléchir.
J'arrive bien à récupérer le nom du bâtiment ce qui signifie que ma variable est visible par ma fonction. Néanmoins, je n'arrive pas à cacher mon composant.
valvincent
Messages postés8Date d'inscriptionlundi 20 avril 2009StatutMembreDernière intervention16 février 2009 16 févr. 2009 à 09:29
Pegase31, m'as proposé une solution en privé qui est de transférer le code de ma main sur un calque actions ce qui faciliterai l'accès aux objets de la scène.
Bien que cette solution fonctionne, je trouve qu'il s'agit un peu de 'bricolage', et ce projet étant d'ordre professionnel j'aimerais clarifier le plus possible mon programme.