Communication avec un swf loadé en as3

Résolu
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 - 8 déc. 2008 à 16:50
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 - 9 déc. 2008 à 12:01
Bonjour,
voilà, je load un swf qui contient un clip qui s'appelle animation.
J'utilise le code suivant que j'ai trouvé sur le net :

var chargeur:Loader = new Loader();
chargeur.contentLoaderInfo.addEventListener ( Event.COMPLETE, termine );
chargeur.load ( new URLRequest ("animation2.swf") );
addChild ( chargeur );

function termine ( pEvt:Event ):void  { 
 // référence le scénario de l'animation chargée
 var scenario:DisplayObject = pEvt.target.content;
  // si le scénario est un MovieClip nous accédons
 // à l'animation et la stoppons
 if ( scenario is MovieClip ) MovieClip ( scenario ).animation.stop();
}

Jusque là tout va bien, il faut dire que j'y suis pas pour grand chose ! Je crée un bouton pour lancer l'animation de mon clip, et naïvement j'utilise :

bouton.addEventListener(MouseEvent.CLICK, fonctionClick);
function fonctionClick(event:MouseEvent):void{
    MovieClip ( scenario ).animation.play();
}

Évidemment, dans fonctionClick scenario n'est pas reconnu...
Autour de cela j'ai essayé tout un tas de trucs, mais rien n'y fait, pas foutu de lancer un ordre play(); à un clip...
La grande régression, l'enfer, le désespoir...

Alors, merci à vous pour votre aide, histoire de ne pas mourir idiot !

Tout vient à qui sait attendre

9 réponses

crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
9 déc. 2008 à 10:02
Salut,

var scenario est déclaré dans la fonction termine donc n'existe plus à sa sortie (garbage collector) et donc dans la fonction fonctionClick.

il vaut mieux faire quelque chose du genre :

var scenario:MovieClip; //vérifie s'il ne faut pas DisplayObject suivant ton code

function termine(evt:Object) {
  scenario = evt.target.content;
}

function fonctionClick(evt:Object) {
  scenario.animation.play();
}
3
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
8 déc. 2008 à 19:58
Hello,

a mon avis un probleme de ciblage...

as-tu essayé de faire sa :

bouton.addEventListener(MouseEvent.CLICK, fonctionClick);
function fonctionClick(event:MouseEvent):void{
    MovieClip ( root.scenario ).animation.play();
}
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
8 déc. 2008 à 19:58
ou

MovieClip ( parent.scenario ).animation.play();
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
9 déc. 2008 à 09:23
Salut,
dans les deux cas, il ne reconnait pas "la propriété scenario".
Je pense que c'est un truc par rapport à l'évènement, mais je ne sais pas comment aborder le problème.
En tout cas, merci de ton aide.

Tout vient à qui sait attendre
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
9 déc. 2008 à 10:10
Génial !!!!!
1000 merci, au moins maintenant je vais pouvoir essayer des trucs.

Tout vient à qui sait attendre
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
9 déc. 2008 à 11:28
petite précision : préférer "evt.currentTarget" à "evt.target" afin d'éviter d'éventuelles erreurs.

Peg'
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
9 déc. 2008 à 11:41
OK, ça marche aussi...
mais quelles erreurs cela évite-t-il ?
En tout cas, merci pour le tuyau.

Tout vient à qui sait attendre
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
9 déc. 2008 à 11:52
regarde dans le dico de Flash la différence entre les deux, c'est assez subtil, mais dans certains cas comme avec le Loader, ça cible l'objet et pas l'info de l'objet.

Peg'
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
9 déc. 2008 à 12:01
C'est ça qui est (à mon gout) compliqué dans l'as3... on sait plus quoi cibler, le loader, le clip, l'évènement, le sprite, l'objet, l'info sur l'objet.
Est-ce qu'un élément de l'info de l'objet est une propriété de l'objet...

Bref c'est paumant !

Pour ma part, je cherche un bon cours (pas à télécharger ou à lire...) mais à prendre, avec un humain en chair et en os.

J'ai fais faire quelques devis dans les organisme de formation, mais c'est la peau du... les yeux de la tête ! D'où recherche de quelqu'un en direct.

En tout cas merci de ton aide.

Tout vient à qui sait attendre
0
Rejoignez-nous