Aide - Recherche - Membres - Calendrier
Version complète : Charger un fichier SWF dans un SWFLoader
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
Nanou3169
Bonjour à tous!!!

Après avoir parcourut tout le forum pour essayer de trouver une solution à mon problème, je viens faire appel à votre savoir faire.

Je souhaite faire une fonction qui me permet de charger un fichier swf dans un SWFLoader.
Dans mon application j'ai posser des composants SWFLoader (a l'occurence il y en a 2), mais je ne veux pas qu'ils se chargent directement, je veux qu'ils se chargent a des moments bien precis (par exemple a l'appui d'un bouton) d'où l envie de faire une fonction qui prendrai par exemple en parametre le chemin du fichier SWF et l'id du SWFLoader.
Si quelqu'un a deja effectuer ce genre de fonction, ça serai simpas de pourvoir m'aider.

Merci d'avance...
Tonic
Salut,

un truc dans le genre :

CODE
private function charge(idSwfLoader:String, url:String):void
{
       var swfLoader : SWFLoader = this.getChildByName(idSwfLoader) as SWFLoader;
       swfLoader.load(url);
}
Fusion
Je viens de taper ça, ça marche icon_biggrin.gif

CODE
<?xml version="1.0"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
    <![CDATA[

          import flash.events.MouseEvent;

          public function b1(event:MouseEvent):void
          {
            Load1.load('MvB1.swf');
          }
          public function b2(event:MouseEvent):void
          {
            Load2.load('MvB2.swf');
          }        
          
        ]]>
    </mx:Script>

<mx:HBox>
    <mx:VBox>
        <mx:SWFLoader id="Load1"  height="100" width="350"/>
        <mx:Button id="bLoad1" click="b1(event)" />
    </mx:VBox>    
</mx:HBox>
<mx:HBox>
     <mx:VBox>  
        <mx:SWFLoader id="Load2"  height="100" width="350"/>
        <mx:Button id="bLoad2" click="b2(event)" />
    </mx:VBox>
</mx:HBox>
</mx:Application>
Nanou3169
Merci d'avoir répondu si vite je vai tester tout desuite, je vous tien au courant...
Encore merci!!!
Nanou3169
Merci beaucoup, ca marche très bien.
Le hic que je rencontre c'est qu'il se charge qu'une seule fois,
c'est a dire que lorque je veux qu'il disparaisse cela marche bien mais quand je reclique sur le bouton pour le faire apparaitre cela ne marche plus!!!

En tout cas merci beaucoup!!! icon_biggrin.gif
Fusion
Comment fais-tu pour faire disparaître et réapparaître les animations?
Nanou3169
Comme je ne connais pas la fonction pour décharger mon SWFLoader,
je fais : swfLoader.load("")
J'ai tester ca marche mais apres j'ai le probleme que j'ai expliquer plus haut.
Fusion
Très très zarb...

CODE
<?xml version="1.0"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
    <![CDATA[

          import flash.events.MouseEvent;

          public function b1(event:MouseEvent):void
          {
            Load1.load('MvB.swf');
          }
          public function b2(event:MouseEvent):void
          {
            Load2.load('MvB.swf');
          }        

          public function bu1(event:MouseEvent):void
          {
            Load1.load("");
          }  
          public function bu2(event:MouseEvent):void
          {
            Load2.load("");
          }            
        ]]>
    </mx:Script>

<mx:HBox>
    <mx:VBox>
        <mx:SWFLoader id="Load1"  height="100" width="350"/>
        <mx:Button id="bLoad1" click="b1(event)"  label="Load"/>
        <mx:Button id="bUnLoad1" click="bu1(event)"  label="UnLoad"/>
    </mx:VBox>    
</mx:HBox>
<mx:HBox>
     <mx:VBox>  
        <mx:SWFLoader id="Load2"  height="100" width="350"/>
        <mx:Button id="bLoad2" click="b2(event)"  label="Load"/>
        <mx:Button id="bUnLoad2" click="bu2(event)"  label="UnLoad"/>
    </mx:VBox>
</mx:HBox>
</mx:Application>


J'ai fait comme toi et au lieu d'effacer, ça redémarre les SWFLoader...
Nanou3169
Attent je te montre ma fonction complete
CODE
<![CDATA[
function chargerSwf(obj:Object,chemin:String,swfLoader:SWFLoader){
    if(obj == "Contact"){
        swfLoader.load(chemin);
    }
    else{
            swfLoader.load("");
    }
}

]]>
<mx:Canvas label="listeM" width="100%" height="100%">
<mx:List x="0" y="0" width="100%" height="100%" id="listMessagin"
    selectedIndex="0"
creationComplete="chargerSwf(List(event.target).selectedItem,'swf/sousmenu.swf',loaderSousMenu)"
        dataProvider="{creationList('messagin')}"
change="chargerSwf(List(event.target).selectedItem,'swf/sousmenu.swf',loaderSousMenu)"
        allowMultipleSelection="false"/>        
</mx:Canvas>


Voila selon l'element selectionner dans ma liste, je veux faire apparaitre ou pas mon animation.
J'ai bien verifier se que retourne mon objet dans la fonction donc la sur ce plan la c'est bon il me renvoi ce que je veux donc la condition "if" fonctionne.
Fusion
J'ai trafiqué ton code pour compléter ce qui manquait et voici un truc qui marche pas trop mal (remplace les *.swf par des swf que tu connais icon_biggrin.gif )
Seul problème, quand je fais loader.load(""), ça ne me fait rien du tout.

CODE
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script>
<![CDATA[

import flash.net.*;
import flash.display.*;
import mx.controls.*;

public function chargerSwf(obj:Object,chemin:String,swfLoader:SWFLoader):void
{
    if(obj.label == "MvB"){

        swfLoader.load(chemin);
        }
    if(obj.label == "Kirby"){

        swfLoader.load(chemin);
        }    
        else
        {
              swfLoader.load("");
        }
}

]]>
</mx:Script>

    <mx:Model id="myanims">
      <states>
        <state label="MvB" data="MvB.swf"/>
        <state label="Kirby" data="2080.swf"/>
        <state label="Contact" data=""/>
      </states>
    </mx:Model>
    <mx:HBox>
        <mx:Canvas label="listeM" width="70%" height="50%">
            <mx:List x="0" y="0" width="100%" height="100%" id="listMessagin"
                selectedIndex="0"
            creationComplete="chargerSwf(List(event.target).selectedItem,List(event.target).selectedItem.data,loaderSousMenu)"
                    dataProvider="{myanims.state}"
            change="chargerSwf(List(event.target).selectedItem,List(event.target).selectedItem.data,loaderSousMenu)"
                    allowMultipleSelection="false"/>  
        </mx:Canvas>

        <mx:SWFLoader id="loaderSousMenu" width="200" height="200"/>


    </mx:HBox>
</mx:Application>

Nanou3169
Merci Fusion d'avoir pris le temps de m'aider, ca marche bien maintenant.
Je voudrais juste poser une question a tout hasard (qui n'a rien avoir avec ce poste): savoir si vous connaissai le composant qui permet de faire la meme chose que dans l'outil FLASH 9 ou FLASH 8 c'est a dire lorsqu'on on veu afficher ou cacher la bibliotheque ou les outils positionner sur la droite, le composant se represente par une fleche au milieu d'une barre verticale et lorsqu'on clic sur cette fleche le menu de droite apparais ou se cache.

Merci de m'avoir debloquer !!!
Fusion
Je viens de relire ce post.
Ton truc ce ne serait pas l'Accordion? (Accordion)

Sinon regarde là-dedans si tu le reconnais... -> Flex 2 Style Explorer
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.