Créer son site Gratuitement : Service / Outils webmaster gratuit
Mon Site Gratuit
Contactez nous
Nos partenaires
Scripts
Tutoriaux
Nos services
Forums
Accueil
ForumsAS3 controler un swf externe depuis le parent et vis versa
      Imprimer le sujet FAQ  M'enregistrer 
  Vous êtes perdu parmi toutes ces lignes de codes, n'hésitez pas à posez vos questions, nous sommes là pour y répondre le plus rapidement possible !

AS3 controler un swf externe depuis le parent et vis versa

Messagede mariemach1 le 29 Sep 2009, 13:30

Bonjour,

Après moultes recherches pas encore assez fructueuses à mon goût, je viens par ici avec mes petites questions (AS3) :

Voici la situation
j'ai chargé un swf externe dans ma sequence ppale

Code: Tout sélectionner
var chargerIntro01:Loader = new Loader();
var cheminIntro:URLRequest = new URLRequest("clips_rubriques/clip_intro.swf");
chargerIntro01.load(cheminIntro);
addChild(chargerIntro01);


1ère question
je voudrais savoir comment le décharger une fois lu
Est-ce que le code suivant pourrait convenir dans ce cas de figure ? :
Code: Tout sélectionner
removeChild(chargerIntro01);
chargerIntro01=null


2ème question
je voudrais qu'une fois que ce swf a été chargé et lu qu'on passe sur une autre frame de ma sequence ppale
J'imagine qu'il faudrait que je créé une condition du genre

Si "clip_intro.swf" (ou chargerIntro01?) a été lu
supprime le
va a la frame suivante de ma sequence ppale (celle du parent)

3ème question
Comment rédiger la commande qui permet de dire fichier lu
Est-ce un truc du genre ?

Code: Tout sélectionner
ChargerIntro.addEventListener(Event.COMPLETE, finDuChargement);


auquel on ajoute une fonction?
Ou alors (je sais c'est mal) puis-je intégrer du code sur la dernière frame de mon swf? Ce qui peut s'avèrer complexe car il n'en a qu'une qui appelle ensuite un child puis un autre etc. ce qui voudrait dire que c'est sur le dernier child lu qu'il faut agir...

Merci pour vos conseils qui me seront très précieux, car comme vous pouvez le constater l'AS3 c'est encore pas mal complexe pour moi.
mariemach1
Nouveau Plug'zien
Nouveau Plug'zien
 
Messages: 16
Inscription: 15 Sep 2009, 11:35
Localisation: France, Bourgogne
Points: 60


Re: AS3 controler un swf externe depuis le parent et vis versa

Messagede zardoz le 29 Sep 2009, 22:54

Pour interroger et/ou modifier les propriétés et méthodes de l'objet charger
tu devras instancier un objet de la classe : LoaderInfo.

Sans quoi il est impossible de communiquer entre le swf chargeur et le swf charger.
l'objet de la classe « LoaderInfo » est à la base de toute communication entre les différents objets.
Sois pour récupérer des données de l'objet charger, ou soit pour modifier les données de l'objet charger.

L'exemple ici témoigne des faits :

Code: Tout sélectionner
var url:String = 'repertoireSWF_externe/macibleSWF.swf';
var chargeur:Loader = new Loader();
var requete:URLRequest = new URLRequest(url);
chargeur.load(requete);
addChild(chargeur);
// ..
// .. On interroge le programme et même si l'objet charger
// .. a une largeur et une hauteur propre, la réponse sera » largeur : 0, hauteur : 0
// ..
trace(chargeur.width, chargeur.height); // 0 0
// ..
// .. Mais il n'en est pas ainsi des propriétés x et y
// .. Celà est dû au fait que l'objet chargeur:Loader est un conteneur par défaut

chargeur.x = 50;
chargeur.y = 50;
// ..
trace(chargeur.x, chargeur.y); // 50 50



Par contre tu ne peut pas écrire : chargeur.width = 200; chargeur.height = 75;
Plus rien ne fonctionnera. Une erreur sera lever à l'exécution. Il n'y aura plus rien au Lecteur Flash.
C'est à ce stade du développement que l'objet « LoaderInfo » entre en scène. Voici un exemple :

Ajoute ce code à la suite de l'autre :

Code: Tout sélectionner
chargeur.contentLoaderInfo.addEventListener(Event.INIT, chargeInfos);
// ..
function chargeInfos(e:Event):void
{
   var infos:LoaderInfo = chargeur.contentLoaderInfo;
  // ..
  // .. Tu viens d'établir une passerelle d'informations et de manipulations de toutes sortes
  // .. et par le fait même l'objet « chargeur » et l'objet « infos » auront
  // .. accès à toutes les propriétés et méthodes de classe.
  // .. l'objet « infos » est toujours en lecture seule. [ Récupération des données ]
  // .. l'objet « chargeur » est maintenant en écriture. [ Modification des données ].
  // ..
  trace(chargeur.width); // Largeur d'origine de l'objet charger
  trace(chargeur.height); // Hauteur d'origine de l'objet charger
  trace(chargeur.numChildren); // 1
  trace(infos.url); // adresse du swf charger
  trace(infos.loaderURL); // adresse du swf chargeur
  trace(infos.bytesLoaded); // Taille du swf charger, en cours de chargement
  trace(infos.bytesTotal); // Taille total du swf à charger
  trace(infos.frameRate); // ips du swf charger
  // ..
  // .. Toutes les proprétés sont accessible pour fin de modification
  // .. de l'objet swf charger, ainsi que toutes les méthodes de classe.
  // .. Tu peut décommenter ici pour fin d'exercice.
  // ..
  /*chargeur.scaleX = 1.5; chargeur.rotation += 45;*/
}


Beaucoup d'autres choses seront à dire ici. Seulement il serait difficile de tout dire sur un seul topic.

Les points à retenir seront comme suit :

- Pour manipuler un objet charger et pouvoir le modifier nous devons instancier un objet de la classe : LoaderInfo
- Celui-ci doit être développer avec un évènement : Event.INIT.
- L'objet « infos » est en lecture seule.
- L'objet « chargeur » est en lecture/écriture
- Les objets possible sont les » swf, jpg, gif, png.

En établissant cette passerelle de communication entre les objets chargeur et charger nous pouvons tout faire en programmation. Les exemples se font très bien en locale mais d'autres écritures de scripts simple seront essentielle si l'objet charger est sur un serveur distant, et le swf chargeur sur un autre serveur distant, ou même en local ou localhost. Ce sont les Sandbox de sécurité.

Je sais que je n'ai pas répondu à tes questions. Par contre tu ne pourra pas te permettre d'ignorer les points énumérer sur ce topic. Car avant de manipuler un objet de chargement externe tu dois comprendre la façon de récupérer les données et la façon de les modifiés.

Ne saute pas cette étape importante lors de tes développements perso car aucune récupération des données et/ou modification de l'objet charger ne pourra être accomplie sans ces connaissances de bases.

Plus tard tu pourra cibler les objets visuels du swf charger. Il s'agit d'un script quelque peu différent avec la possibilité de cibler des objets visuels comme un MovieClip ou un Bitmap du swf importer à partir du swf chargeur.

Je te suggère au début de charger une image plutôt qu'un swf, car tu aura meilleur vue sur la programmation et les objets cibler et des possibilités offert par la classe : LoaderInfo.

Dans mes exemples, seul l'objet chargeur est manipuler. Ce en quoi il faut changer la largeur et la hauteur en tenant compte du ratio, afin de ne pas déformer le swf importer. N'oubli pas que lorsque nous manipulons le chargeur, que tous les objets visuels du swf importer seront aussi modifier. Car le chargeur est d'abord et avant tout un conteneur. Par le fait même il est Parent. L'objet swf charger est donc Enfant. trace(chargeur.numChildren); // 1.

++
zardoz
Plug'zien Star'z
Plug'zien Star'z
 
Messages: 888
Inscription: 16 Fév 2008, 04:05
Points: 582


Re: AS3 controler un swf externe depuis le parent et vis versa

Messagede mariemach1 le 06 Oct 2009, 09:35

Merci pour ta réponse Zardoz !
mariemach1
Nouveau Plug'zien
Nouveau Plug'zien
 
Messages: 16
Inscription: 15 Sep 2009, 11:35
Localisation: France, Bourgogne
Points: 60


Re: AS3 controler un swf externe depuis le parent et vis versa

Messagede orangina le 04 Déc 2009, 00:35

Bonjour !
j'ai un gros probleme que je n'arrive pas à résoudre, je remercie d'avance ceux qui auront la patience de se pencher sur le probleme, voilà mon cas de figure:

j'ai une scène principale index.fla sur laquelle j'ai charger 3 swf externes.
je souhaiterais écouter quelques évènements mouseDown et mouseOver de certains clips contenus dans ces swf externes pour déclencher des apparitions et disparitions dans ma scène princpale index.

>mon clip chargeur de "filmo.swf" s'appel "filmo_mc".
>filmo.swf contiens des tonnes de clip dont un: "bomb_mc". je souhaiterais écouter l'évènement mouseDown de celui ci.

alors j'ai naivement ecrit:
filmo_mc.bomb_mc.addEvenetLIstener("mouseDown",btndisparait);

mais ça ne fonctionne pas, humm est-t-il au moins possible d'écouter ces évènements ?

je vais copier mon voisin du dessus et vous demander des conseils précieux :p , si quelqu'un à un peu de temps.


petit edit: je viens de regarder de plus près les livedocs et j'ai trouver ça:
"Une fois que le fichier SWF externe est chargé, il devient accessible via la propriété Loader.content. Si ce fichier est publié en ActionScript 3.0, il s'agira soit d'un clip, soit d'un sprite, selon la classe qu'il étend."

donc en gros je dois utiliser loader.content (si je comprend bien...) ?
Avatar de l'utilisateur
orangina
Nouveau Plug'zien
Nouveau Plug'zien
 
Messages: 1
Inscription: 03 Déc 2009, 23:42
Points: 1



Retourner vers Vos questions en Programmation / Création de site

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités