Chargement swf externe dans un swf principal

Retrouvez ici les topics qui font suite aux cours présentés sur explainMe. Si vous avez des questions par rapport aux cours, des remarques ou encore des infos à ajouter, c'est ici.

Re: Chargement swf externe dans un swf principal

Messagepar design7 sur Ven 26 Fév 2010 11:03

bjr,
Excusez moi, j'ai oublié de coller le messager de sortie que flash m'a renvoyé :o , le voici :

TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at interface_fla::MainTimeline/interface_fla::frame1()

Merci 8-)
design7
design7
Nouveau membre
 
Messages: 13
Inscrit le: Lun 08 Fév 2010 17:55
Reputation points: 0
Add reputation pointSubtract reputation point

Re: Chargement swf externe dans un swf principal

Messagepar explainMe sur Ven 26 Fév 2010 19:24

Salut,

Alors l'erreur est relative au fait que tu utilise un nom d'occurrence qui renvoi soit à rien, soit à un éléments qui n'est pas de type Objet.

à mon avis, cela viens de la ligne suivante :

this.c_interface.contenu.addChild(chargeur);

Si ton code est placé à la racine de ton fichier alors c'est peut-être que tu a oublié de donner un nom d'occurrence à ton clip interface.

Si ton code est placé dans le clip interface, alors il ne sert à rien de l'inclure dans la hiérarchie car il est déjà inclus dedans via le mot réservé this.

Essaye avec le code suivant tout simplement :

this.contenu.addChild(chargeur);

Si tu as toujours l'erreur, alors il faudra me renvoyer tes fichiers que j'y regarde de plus près...
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Chargement swf externe dans un swf principal

Messagepar design7 sur Lun 01 Mar 2010 09:23

Hello!,
J'ai vérifié pour vérifié et tout semble être normal de mon côté c'est-à-dire que le clip interface porte bien un nom d'occurrence (c_interface). A l'exécution, l'erreur suivante m'est toujours retournée :
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at interface_fla::MainTimeline/interface_fla::frame1()

Je viens de te faire aussi un mail pour transférer mon fichier car à partir du forum je n'arrive pas à uploader des fichier (c'est la deuxième fois que ça m'arrive)

Bon début de semaine.

design7.
design7
Nouveau membre
 
Messages: 13
Inscrit le: Lun 08 Fév 2010 17:55
Reputation points: 0
Add reputation pointSubtract reputation point

Re: Chargement swf externe dans un swf principal

Messagepar explainMe sur Lun 01 Mar 2010 20:31

Pour uploader un fichier sur le forum, il fait qu'il soit zipper au format zip ou rar, tu ne peux pas directement uploader un fichier contenant des scripts (question de sécurité).

J'ai reçu ton mail je regarde.
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Chargement swf externe dans un swf principal

Messagepar explainMe sur Lun 01 Mar 2010 20:49

OK, alors ton erreur viens du code que tu as placé sur ta première image clé, à savoir :

Code: Tout sélectionner
var monclip:URLRequest = new URLRequest("sousmenu.swf");
//Création du chargeur
var chargeur:Loader = new Loader()
//Chargement du contenu
chargeur.load(monclip);
//ajout à la liste d'affichage soit afficher dans l'ecran
this.c_interface.contenu.addChild(chargeur);


Et spécialement la dernière ligne :
this.c_interface.contenu.addChild(chargeur);

Pourquoi ?

Parce que si tu regarde bien à l'image 1, ton clip c_interface n'existe pas encore pour flash puisqu'il n'est présent sur ta timeline qu'à partir de l'image 10 ! D'où ton erreur.

En gros si tu veux charger quelque chose dans le clip contenu, qui se trouve dans le clip c_interface, tu ne peux le faire qu'à partir de l'image clé 10, car avant, le clip c_interface et tout ce qu'il contient n'existe pas encore pour flash.

Rien à vori j'ai regarder le reste de ton code et je me permets de t"indiquer une optimisation sur ta fonctiojn affiche() :

Toi tu fait :
Code: Tout sélectionner
var chargeur:Loader = new Loader();
function affiche (event:MouseEvent){
   if (event.currentTarget==monmenu.btn1){
       //--- On vide le conteneur ---
         while(this.contenu.numChildren > 0)  {
             this.contenu.removeChildAt(0);
         }

       //url à atteindre
       var maRequete:URLRequest = new URLRequest ("sousmenu.swf");
       // chargement du contenu
       chargeur.load (maRequete);
       // ajout à la liste d'affichage
       this.contenu.addChild(chargeur);
   
      }
      
   else if (event.currentTarget==monmenu.btn2){
            //--- On vide le conteneur ---
         while(this.contenu.numChildren > 0)  {
             this.contenu.removeChildAt(0);
         }
         // création du chargeur
         //var chargeur:Loader = new Loader();
        //url à atteindre
       var maRequete2:URLRequest= new URLRequest ("sousmenu2.swf");
       // chargement du contenu
       chargeur.load (maRequete2);
       // ajout à la liste d'affichage
       this.contenu.addChild(chargeur);
      }
else if (event.currentTarget==monmenu.btn3){
            //--- On vide le conteneur ---
         while(this.contenu.numChildren > 0)  {
             this.contenu.removeChildAt(0);
         }
         // création du chargeur
         //var chargeur:Loader = new Loader();
        //url à atteindre
       var maRequete3:URLRequest= new URLRequest ("sousmenu3.swf");
       // chargement du contenu
       chargeur.load (maRequete3);
       // ajout à la liste d'affichage
       this.contenu.addChild(chargeur);
      }
else if (event.currentTarget==monmenu.btn4){
            //--- On vide le conteneur ---
         while(this.contenu.numChildren > 0)  {
             this.contenu.removeChildAt(0);
         }
         // création du chargeur
         //var chargeur:Loader = new Loader();
        //url à atteindre
       var maRequete4:URLRequest= new URLRequest ("sousmenu4.swf");
       // chargement du contenu
       chargeur.load (maRequete4);
       // ajout à la liste d'affichage
       this.contenu.addChild(chargeur);
      }
}


Moi je te propose :
Code: Tout sélectionner
function affiche(event:MouseEvent) {
   //--- On vide le conteneur ----------------------------- UNE SEULE FOIS
   while (contenu.numChildren > 0) {
      contenu.removeChildAt(0);
   }
        //--------------------------------------------------------- ON NE DÉCLARE QU'UNE VARIABLE (et non 4)
   var maRequete:URLRequest;
   if (event.currentTarget==monmenu.btn1) {
      //-------------------------------------------------- ON REDÉFINI LA VARIABLE EN FONCTION DU RÉSULTAT DU TEST
      maRequete=new URLRequest("sousmenu.swf");

   } else if (event.currentTarget==monmenu.btn2) {
      maRequete=new URLRequest("sousmenu2.swf");
   } else if (event.currentTarget==monmenu.btn3) {
      //url à atteindre
      maRequete=new URLRequest("sousmenu3.swf");
      // ajout à la liste d'affichage
   } else if (event.currentTarget==monmenu.btn4) {
      //url à atteindre
      maRequete=new URLRequest("sousmenu4.swf");
   }// ajout à la liste d'affichage
   //------------------------------------------------------- ON NE DÉFINI QU'UNE FOIS LE CHARGEUR
         var chargeur:Loader = new Loader();
         chargeur.load(maRequete);
        //------------------------------------------------------- ON CHARGE
         contenu.addChild(chargeur);
}


Ça n'a l'air de rien mais ce sont de bonnes habitudes à prendre pour optimiser son code (1 variable consommera moins de ressources CPU que 4).
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Chargement swf externe dans un swf principal

Messagepar design7 sur Mar 02 Mar 2010 09:29

Bonjour,
J'ai testé le code et ça marche merveille. Coup de chapeau aussi pour l’optimisation de mon code. Ça prouve vraiment que tu maîtrise la chose. Je vais continuer à lire et faire de recherche jusqu’à ce que j’acquière les bonnes pratiques d’ActionScript comme toi, tu me donne le goût d’approfondir flash et je t’en remercie bcp pour ton aide. J'ai plus de problème pour le chargement swf externe :!: et ce grâce à toi. C'est cool 8-)

design7 :D
design7
Nouveau membre
 
Messages: 13
Inscrit le: Lun 08 Fév 2010 17:55
Reputation points: 0
Add reputation pointSubtract reputation point

Re: Chargement swf externe dans un swf principal

Messagepar explainMe sur Mar 02 Mar 2010 12:34

Avec plaisir !

P.S. : c'est le premier message qu'il fait éditer pour marquer le topic comme validé (m'en occupe).
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Précédent

Retourner vers Suite des cours

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron