Accueil > Forum > > > > Problème de loader / unload
Problème de loader / unload
lundi 27 avril 2009 à 16:56:18 |
Problème de loader / unload

olliesound
|
Salut tout le monde je vous expose mon souci : Réalisant mon portfolio en flash, j'ai créé un swf principal avec des boutons qui lorsque l'on clique sur eux appellent des swf externes. Tout marche formidablement bien hormis une chose: le unload tant et si bien qu'au bout d'un moment l'anim rame complètement puisque les swf se superposent. J'ai retourné le problème dans tous les sens et pourtant bien cherché mais rien à faire je n'arrive pas à régler mon prob. Ci joint le code de mon swf d'accueil: var chargeur:Loader = new Loader(); var adresse:URLRequest = new URLRequest("the wall reverse.swf"); var adresse2:URLRequest = new URLRequest("the wall reverse 2.swf"); var adresse3:URLRequest = new URLRequest("the wall reverse 3.swf"); addChild(chargeur); function fct1(pEvt:MouseEvent):void { chargeur.load(adresse); } function fct2(pEvt:MouseEvent):void { chargeur.load(adresse2); } function fct3(pEvt:MouseEvent):void { chargeur.load(adresse3); } bouton1.addEventListener(MouseEvent.CLICK,fct1); bouton2.addEventListener(MouseEvent.CLICK,fct2); bouton3.addEventListener(MouseEvent.CLICK,fct3); J'ai essayé de mettre des "chargeur.unload();" avant les "load", mes "trace" passent bien et pourtant rien de se décharge"... Une idée?
|
|
lundi 27 avril 2009 à 17:30:20 |
Re : Problème de loader / unload

on_drag_on
|
Salut, C'est étrange ... ça ne viendrait-il pas de tes swfs externes ou il y a peut-être une boucle infinie ou que sais-je ... par hasard ? Parce que si tu fais : chargeur.unload(); chargeur.load(adresse); Ca doit fonctionner .... @+. telov.ch
|
|
lundi 27 avril 2009 à 17:38:31 |
Re : Problème de loader / unload

olliesound
|
Je vais jeter un coup d'oeil mais tout comme toi je suis surpris que ça ne passe pas ... Du coup je vais mettre un "unload();" au dessus de chaque load.... je réessaye pour voir !
|
|
lundi 27 avril 2009 à 18:22:53 |
Re : Problème de loader / unload

olliesound
|
N'y a t il pas un rapport avec la scène principale ? Dans le sens ou la chargeur agit depuis la scene principale et non pas dans un movieclip ? Auquel cas je devrais décharger dans la scène.... si quelqu'un à la syntaxe AS3 parce que les root et stage, il a pas l'air d'aimer mon code... Merci d'avance
|
|
mardi 28 avril 2009 à 09:34:29 |
Re : Problème de loader / unload

Blacknight91titi
|
Bonjour,
La cible ici n'a pas beaucoup d'importance étant donné que tu agis sur le même niveau.
addChild() ajoute ton DisplayObject sur l'élément en cours.
C'est en effet cependant très étonnant de constater ce problème... Est le code exact que tu as mis dans ton message ?
Le problème peut également venir d'ailleurs.
Est ce que sur le swf que tu charge, il n'y aurait pas un "stage.addChild(...)" qui ferait que celui-ci sort de son contexte.
Note : Peut-être faut t'il d'abord retirer le loader de la scène avant de le décharger puis de le remettre (histoire de rafraîchir le visuel).
Blacknight
www.osteres.com
|
|
mardi 28 avril 2009 à 09:52:50 |
Re : Problème de loader / unload

olliesound
|
voila le code un peu remanié qui se trouve sur le swf qui se lance en guise d'accueil. J'ai mis un calque avec un son qui se lit en boucle histoire de voir si, quand je clique sur bt1, bt2 ou bt3 le loader se décharge bien... a priori non ........... le code : var chargeur:Loader = new Loader();
var adresse:URLRequest = new URLRequest("thewallreverse.swf");
var adresse2:URLRequest = new URLRequest("thewallreverse2.swf");
var adresse3:URLRequest = new URLRequest("thewallreverse3.swf");
addChild(chargeur);
function fct1(pEvt:MouseEvent):void { chargeur.unload();
removeChild(chargeur);
chargeur.load(adresse);
addChild(chargeur);
}
function fct2(pEvt:MouseEvent):void { chargeur.unload();
removeChild(chargeur);
chargeur.load(adresse2);
addChild(chargeur);
}
function fct3(pEvt:MouseEvent):void { chargeur.unload();
removeChild(chargeur);
chargeur.load(adresse3);
addChild(chargeur);
}
bouton1.addEventListener(MouseEvent.CLICK,fct1);
bouton2.addEventListener(MouseEvent.CLICK,fct2);
bouton3.addEventListener(MouseEvent.CLICK,fct3);
|
|
mardi 28 avril 2009 à 11:21:51 |
Re : Problème de loader / unload

Girou
|
Bonjour, j'aurais tendance a dire que le probleme doit venir des swf externes comme le signalent On_drag_on et Blacknight91titi unload() va retirer le swf chargé de la displayList du Loader mais pas l'enlever de la mémoire. Hors si effectivement il y a des écouteurs ou des références placées hors du contexte du swf chargé, il restera toujours en mémoire. si on recharge plusieurs fois le même swf, j'ai tendance a penser que dans la mémoire du swf principale, chaque swf chargé sera considéré comme une entité indépendante et donc la mémoire risque de saturer à un moment. dans la doc de Flash on trouve ceci : public function unload():void| Language Version : | ActionScript 3.0 |
| Runtime Versions : | AIR 1.0, Flash Player 9 |
Removes a child of this Loader object that was loaded by using the load() method. The property of the associated LoaderInfo object is reset to null. The child is not necessarily destroyed because other objects might have references to it; however, it is no longer a child of the Loader object. As a best practice, before you unload a child SWF file, you should explicitly close any streams in the child SWF file's objects, such as LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise, audio in the child SWF file might continue to play, even though the child SWF file was unloaded. To close streams in the child SWF file, add an event listener to the child that listens for the unload event. When the parent calls Loader.unload(), the unload event is dispatched to the child. The following code shows how you might do this: function closeAllStreams(evt:Event) { myNetStream.close(); mySound.close(); myNetConnection.close(); myLocalConnection.close(); }
@+ 
|
|
mardi 28 avril 2009 à 11:56:54 |
Re : Problème de loader / unload

Blacknight91titi
|
L'idée est bonne, dans un premier temps essai de ne travailler qu'avec deux swf. Tu auras moins de boulot pour trouver ce qui ne vas pas.
En suite, peux-tu nous montrer l'un des swf que tu charges ? A condition que tu es centré ton code au même endroit :)
Travail l'idée de la référence vers le swf qui n'est pas perdue.
Une petite traduction pour ceux ne comprenant pas ;)
unload () méthode
public function unload():void
Version du langage: ActionScript 3.0
Versions du moteur d'exécution: AIR 1.0 Flash Player 9
Supprime un enfant de l'objet Loader chargé à l'aide de la méthode load(). La valeur property de la propriété null de l'objet LoaderInfo associé est réinitialisée. L'enfant n'est pas nécessairement détruit, car d'autres objets risquent de s'y référer. Il n'est cependant plus un enfant de l'objet Loader.
Avant de décharger un fichier SWF enfant, il est recommandé de fermer explicitement tout flux continu dans les objets enfants du fichier SWF, tels que les objets LocalConnection, NetConnection, NetStream et Sound. Si vous n'effectuez pas cette opération, la lecture de l'audio risque de continuer dans le fichier SWF enfant, bien que ce dernier soit déchargé. Pour fermer les flux continus dans le fichier SWF enfant, ajoutez un écouteur d'événement à l'enfant qui écoute l'événement unload. Lorsque le parent appelle Loader.unload(), l'événement unload est distribué à l'enfant. L'exemple suivant illustre cette opération :
function closeAllStreams(evt:Event) {
myNetStream.close();
mySound.close();
myNetConnection.close();
myLocalConnection.close();
}
myMovieClip.loaderInfo.addEventListener(Event.UNLOAD, closeAllStreams);
|
|
mardi 28 avril 2009 à 12:01:37 |
Re : Problème de loader / unload

olliesound
|
J'essaye ça tout de suite !!! effectivement j'ai lu cela ce matin et il semblerait que contrairement à loadMovie(); et unloadMovie(); qui supprimait automatiquement le loadMovie chargé précédemment, le Load et Unload d'as3 est beaucoup plus difficile à gérer....
le lien : http://www.astorm.ch/blog/index.php?post/2008/04/16/Polemique-envers-Loaderunload
j'ai pas très bien compris les removeListener, ou du moins ça n'a rien apporté à mon code.
|
|
mardi 28 avril 2009 à 12:09:34 |
Re : Problème de loader / unload

Blacknight91titi
|
Ce n'est pas forcément plus difficile à gérer, c'est juste qu'il faut être plus rigoureux quand tu développes et penser à plus de chose plutôt que de laisser faire la machine.
La logique est simple : Plus la machine fera de boulot à ta place, moins elle sera performante ;)
ActionScript 3 apporte une énorme amélioration au niveau performance, mais en contrepartie la conception se doit d'être mieux réalisé.
Il faut voir le bon coté : Cela oblige à mieux concevoir.
Ceci-dit...le coup du unload dans un swf, je pense que très peu de gens y pense (moi y compris).
Tout dépend en fait l'utilisation de tes swf ;) (J'ai tendance à ne jamais inclure d'autre swf personnellement, je n'aime pas ça).
Dans tes swf inclus, tu utilises l'une des classes suivantes ?
- LocalConnection
- NetConnection
- NetStream
- Sound
S'il y en a au moins une, le problème peut très certainement se trouver là.
|
|
Cette discussion est classée dans : swf, loader, mouseevent, chargeur, urlrequest
Répondre à ce message
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|