begin process at 2012 05 27 17:11:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Problème de loader / unload


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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

Membre Club
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

Membre Club
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 :

unload()method 
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();
}


@+

signature not found
mardi 28 avril 2009 à 11:56:54 | Re : Problème de loader / unload

Blacknight91titi

Membre Club
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

Membre Club
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à.

1 2 3 4 5

Cette discussion est classée dans : swf, loader, mouseevent, chargeur, urlrequest


Répondre à ce message

Sujets en rapport avec ce message

Problème AS3 quand je passe d'une page à l'autre, un swf externe ne veut pas disparaître et reste en dessous du nouveau swf externe. [ par Madonnina78 ] Bonjour, Problème AS3 quand je passe de ma page BIOGRAPHIE à ENTOURAGE et que je reviens ensuite sur Biographie. Le fichier externe swf ne veut pas d Placer un claquepar dessus le Loader de ma scène principal [ par Michelflashgordon ] Bonjour à tous! J'ai un Loader dans lequel je souhaite charger plusieurs SWF. Sur la scène principal j'ai créer un calque "CADRE" avec un cadre effet Problème code AS3 [ par didj1 ] Bonjour petit souci avec ce code j'ai mis 9 boutons sur mon code et la pas de problème mais lorsque je veux en metre 10 sa fonctione plus le 10ème bou cibler élément d' un array [ par luiscarol ] Bonjour à tous, étant nouveau et débutant en AS3, je cherche à cibler dans array un élément. c'est une navigation qui contient plusieurs SWF. je poste bouton flash [ par chterna ] bjr je suis entrain de creer une page html avec des bouton en flash chake bouton relie a une page html je voudrai qu'en clikan sur les bouton la pag redimensionner un swf avant de l'importer sur scéne [ par yasdar ] voici mon code : var chee:URLRequest = new URLRequest("exp.swf"); var contt:Loader =new Loader(); contt.load (chee); addChild(contt); la taille du e Actualisation d'un swf [ par Hamza75 ] Bonjour a tous je recherche une solution pour pouvoir mettre a jour mon swf qui est liée a un fichier txt je vous explique la man½uvre pour vous d AS3 - Fichier externe swf [ par Madonnina78 ] Bonjour, j'ai un soucis sur le frame ou j'importe un swf externe. Tout va bien sauf que je ne vois pas toutes les autres images sur ma scène, en bref Chargement swf externe et liens php pseudo frame [ par nissaexpa ] Bonjour, codeur amateur j'utilise pas mal de chargement de swf externe dans un swf qui me sert de fond, et je viens de découvrir les pseudo frames en


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales