ActionScript 3 soucis d'unLoad...

Riliono Herve Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 2 novembre 2008 - 1 nov. 2008 à 00:03
TYler_Grievous Messages postés 7 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 9 février 2010 - 4 févr. 2010 à 20:16
Bonjour,


J’ai un souci en AS3 (voir plusieurs.. mais une chose à la fois !)



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




J’ai réalisé un menu dans un swf principal dont le but est de charger des swf externes.


Tout marche nickel (voir le code si dessous) quand je clique sur « enfant1 » le swf correspondant se charge et idem pour « enfant 2 »


Le souci est que quand je clique plusieurs fois les swf précédemment chargé restent apparents hors que voudrai les faire disparaître pour n’afficher que le swf demandé.


Je pense que le souci est dans ma function « clicMenu » (en fin de code) mais étant encore très court en AS3, j’ai testé plusieurs solutions sans succès.





Merci d'avance Hervé
 




Pour info, pour la réalisation de ce menu, ma source : http://pratiqueactionscript3.bytearray.org/


Voici le code complet :


//----------------- Le MENU-----------------------------


// import des classes tween et Elastic pour le type de mouvement



import fl.transitions.Tween;





import fl.transitions.easing.Elastic;




// les rubriques


var legendes:Array = new Array ( "enfant1", "enfant2");


// les liens


var liens:Array =  new Array ("enfant1.swf", "enfant2.swf")


//Création du conteneur


var conteneur:Sprite = new Sprite();



conteneur.x = 100;





conteneur.y = 10;





addChild ( conteneur);





function creeMenu():void {






            var Ing:int = legendes.length;






            var monBouton:Bouton;






            for ( var i:int = 0; i




           
{//création des occurences du symbole bouton



           
monBouton = new Bouton();






            trace (legendes[i]);






           
//variable referençant le clip utilisé pour l'état haut



           
var etatHaut:MovieClip = MovieClip ( monBouton.upState);






           
// affectation des legendes des boutons



            etatHaut.maLegende.text = legendes[i];



            // affectation du clip pour tous les états



            monBouton.upState = etatHaut;



            monBouton.downState = etatHaut;



            monBouton.overState = etatHaut;



            monBouton.hitTestState = etatHaut;



            //Stockage des liens associé



            monBouton.lien = liens[i];



           
// disposition des instances.






            monBouton.Tween = new Tween ( monBouton, "y" , Elastic.easeOut, 0, 20 +i * (monBouton.height + 10), 3, true);






           
// un objet tween est crée pour l'effet de survol



           
monBouton.tweenSurvol = new Tween ( monBouton, "scaleX", Elastic.easeOut, 1, 1, 2, true);






           
conteneur.addChild ( monBouton);



            }


}


creeMenu();


// capture de l'evenement MouseEvent CLICK auprès du conteneur



conteneur.addEventListener ( MouseEvent.CLICK, clicMenu, true);





conteneur.addEventListener( MouseEvent.ROLL_OVER, survolBouton, true);





conteneur.addEventListener( MouseEvent.ROLL_OUT, quitteBouton, true);






 





//Le survol des boutons


function survolBouton ( pEvt:MouseEvent):void {



           
var monTween:Tween = pEvt.target.tweenSurvol;






           
monTween.continueTo(1.1, 2);


}



 




// fin de survol des boutons



function quitteBouton (pEvt:MouseEvent):void {






            var monTween:Tween = pEvt.target.tweenSurvol;






           
monTween.continueTo(1, 2);


}



 





 




//chargement des SWF externe



function clicMenu ( pEvt:MouseEvent ):void {






            var chargeur:Loader = new Loader();






           
var adresse:URLRequest = new URLRequest(pEvt.target.lien);



            chargeur.load(adresse);



            chargeur.x = 190;



            chargeur.y = 0;



            addChild(chargeur)


}


 

4 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
1 nov. 2008 à 18:52
Hello,

ton probleme est que tu crée un nouvel objet Loader a chaque fois que tu clci sur un bouton... donc chaque loader est different est au son propre contenu...

donc il faut instancier ton loader (var chargeur:Loader = new Loader();) en dehors de ta fonction clicMenu...

oublie pas corriger ta faute : addChild(chargeur); ------------ LE POINT VIRGULE

Conseil : utilise les ecouteur pour savoir quand ton loader a fini de charger son contenu et ainsi afficher ce contenu seulement s'il a fini de le chargé... (en dehors de ta fonction clicMenu) : chargeur.addEventListener(Event.COMPLETE, fonctionLancerSWFavecAddChild);
0
Riliono Herve Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 2 novembre 2008
2 nov. 2008 à 17:05
Mille merci ça marche
0
laferrerie Messages postés 1 Date d'inscription mardi 11 juillet 2006 Statut Membre Dernière intervention 7 mai 2009
7 mai 2009 à 19:11
Bonjour
j'ai un petit probleme, j'ai importé un swf dans mon fichier Action script 3 avec ce code

var l = new Loader();
addChild(l);
l.load(new URLRequest("player.swf"));

le probleme c'est que je ne sais pas comment unloader ce swf lorsque je clique sur n'importe quel autre bouton dans mon menu principal

est-ce que quelqu'un aurait une idée...?
merci beaucoup

laferrerie
0
TYler_Grievous Messages postés 7 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 9 février 2010
4 févr. 2010 à 20:16
j'ai découvert après multiple lobotomie que la solution réside dans le removeChild ...
0
Rejoignez-nous