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.
++