Communiquer entre 2 swf chareur et chargé

Ikarr Messages postés 12 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 5 juillet 2010 - 15 oct. 2009 à 13:26
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 14 nov. 2009 à 11:51
bonjour

je me heurte à un petit problème, j'imagine que c'est possible mais je n'en suis pas totalement certain.

je charge un swf qui s'appelle "galerie.swf", c'est une galerie photo ou il y a toutes les images dans la bibliothèque liées par bitmapdata.
je le charge dans un swf "index.swf" qui lui ne possède rien excepté un container pour le swv "galerie" et deux boutons.

j'aimerai que un des boutons " > " qui sont sur le swf "index.swf" démarrent la fonction "imageSuivante(param)" du swf "galerie" pour que la deuxième image apparaisse et ainsi de suite.

de même avec le deuxième bouton " < " démarre la fonction "imagePrecedente(param)" pour que ça revienne en arrière.

je n'ai malheureusement pas de code sur moi,je suis au travail, mais je cherche désespérément un début de réponse sur google ou d'autres forums sans résultats.
je ne comprends pas la communication entre 2 swf parent et enfant.... jai pourtant mis ma fonction (si je me souviens du code) - galerie.imageSuivant(param) - dans Event complete du loader qui charge "galerie.swf" et j'ai mis un ADDED_TO_Stage dans "galerie.swf"

mais il y a une erreur du genre : // imageSuivante ne semble pas être une fonction //

merci de votre aide,,, je mettrai le code dés que je le pourrais.

14 réponses

Ikarr Messages postés 12 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 5 juillet 2010
15 oct. 2009 à 13:29
en fait il s'agirait plutôt d'agir sur le swf enfant. pour quu'il passe les photos depuis un événement lancé sur un bouton de son parent.
merci
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
13 nov. 2009 à 09:52
Salut

Je ne sais pas quelle version d'actionscript tu utilises, mais je t'invite à regarder dans l'aide de Flash la classe LocalConnection, qui devrait normalement résoudre ton souci.
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
13 nov. 2009 à 11:42
Hello,

Tu trouveras une réponse à ton probleme dans le paragraphe "Faire communiquer deux swf imbriqués (l'un chargé dans l'autre)" sur ce site : http://yazo.net/index.php?option=com_content&view=article&id=56&Itemid=59

A+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
13 nov. 2009 à 12:10
La solution d'Orange73 marche effectivement si tu veux agir sur la lecture du swf enfant ou agir sur le déplacement des éléments graphiques de celui-ci et a le mérite d'être très simple. Quant à ma solution (LocalConnection), elle te sera utile si tu veux appeler une fonction du swf enfant (et donc à partir de laquelle tu peux faire ce que tu veux ). A toi de voir !
0

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

Posez votre question
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
13 nov. 2009 à 14:12
Tu peux appeler une fonction dans le swf enfant aussi avec ma soluce :)


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
13 nov. 2009 à 14:29
Ah bon ?
Là je suis curieux, j'ai essayé à plusieurs reprises avec ta méthode pour appeler une fonction de ma classe liée à mon FLA, mais j'ai jamais réussi... Et c'est du coup pour ça que j'ai regardé du côté de LocalConnection qui marche très bien pour moi. Tu pourrais me dire comment tu ferais ? (juste pour ma culture générale )
Merci !
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
13 nov. 2009 à 16:01
Dans le SWF Parent :

var chargeur:Loader = new Loader();
var adresse:URLRequest = new URLRequest("ss.swf");
chargeur.load(adresse);
addChild(chargeur);

chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, go);

function go(e:Event):void
{
     MovieClip(chargeur.content).hello();
}


Dans le SWF enfant :

function hello()
{
trace("hello");
}


A+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
13 nov. 2009 à 17:49
Ben justement c'est bien ce que j'avais testé et ça ne marche pas.
Ce qui ne m'étonne pas d'ailleurs car avec la commande :
MovieClip(chargeur.content).hello();
tu demandes finalement à appeler la méthode hello() sur un MovieClip, ce qui n'est évidemment pas possible ...
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
13 nov. 2009 à 17:53
Chez moi sa marche


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
13 nov. 2009 à 18:12
As-tu mis ton code dans une image de la timeline ? (auquel cas effectivement ça pourrait fonctionner, mais j'ai pas essayé)
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
13 nov. 2009 à 19:05
bien sur que je l'ai mis sur la timeline.

tu demandes finalement à appeler la méthode hello() sur un MovieClip, ce qui n'est évidemment pas possible ...


Pourrait-on savoir pourquoi ? car c'est nouveau çà !!!


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
13 nov. 2009 à 19:15
Ok !
Dans la timeline effectivement ça m'a l'air possible en effet. Mais dans le cas où tu crées une classe liée à ton FLA (du code qui se trouve donc externalisé, et donc pas dans la timeline, ce qui en terme de propreté de code est tout de même mieux pour un projet même de taille moyenne, mais c'est un autre débat), et que dans cette classes tu crées une méthode hello(), là ça ne marchera pas, même si cette méthode est déclarée en public. Et donc dans ce cas, il faudra passer par une LocalConnection.
Les 2 solutions se défendent, donc, selon l'endroit où est placé le code du swf enfant (externalisé ou non).
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
14 nov. 2009 à 11:24
Tu parle d'une classe document ? car avec une classe normal cela marche aussi.

J'ai pas testé, mais je vois pas pourquoi cela ne marcherai pas avec une classe document.
Je ferai un test et te redirais


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
14 nov. 2009 à 11:51
Yep, je parlais bien d'une classe de document
0
Rejoignez-nous