IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Swap animations :: supprimer/remplacer


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 64
    Par défaut Swap animations :: supprimer/remplacer
    Bonjour,

    Récent migrant vers AS3, je réussis à utiliser la classe .Loader pour afficher des swf externes... J'in un swf de départ vide qui charge le premier *.swf, et depuis celui-ci, je voudrais pouvoir le remplacer par un autre, au clic... Le clic c'est que mon code fait se superposer les *swf les uns par-desus les autres sans que le précédent soit effacé. Bref... Que faire?

    index.fla:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    /*var mc=_root.createEmptyMovieClip('container');
    loadMovie('stage_3.swf',container);*/
     
    // import des classes nécessaires :
    // nous importons les classes necessaires :
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLLoaderDataFormat;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
     
    // nous déclarons un objet URLLoader :
    var container:URLLoader = new URLLoader ();
     
    // nous créons un objet URLRequest qui contient l'url du fichier :
    var adresse:URLRequest = new URLRequest ("stage_3.swf");
     
    // nous lançons le chargement du fichier, en indiquant l'adresse de celui ci par l'objet URLRequest :
    container.dataFormat = URLLoaderDataFormat.BINARY;
    container.load(adresse);
     
    // définition des événements de l'objet container
    container.addEventListener(Event.COMPLETE, finDuChargement);
    container.addEventListener(ProgressEvent.PROGRESS, avancement);
    container.addEventListener(IOErrorEvent.IO_ERROR, indiquerErreur);
     
    // définition de la fonction éxecutée par l'événement COMPLETE :
    // ( déclenchée lorsque le chargement se termine )
    function finDuChargement ( event:Event ) {
    	var contenu = event.target.data;
    	creerLoader (contenu);
    }
     
    // fonction déclenchée à la fin du chargement URLLoader, qui ajoute un Loader sur la scene :
    function creerLoader ( datas ) {
    		var container:Loader = new Loader();
    		container.loadBytes(datas);
    		stage.addChild(container);
    } 
     
    // définition de la fonction éxecutée par l'événement PROGRESS :
    // déclenchée à chaque avancement du chargement )
    function avancement( event:Event) {
    	trace(event.target.bytesLoaded+" chargés sur "+event.target.bytesTotal);
    }
     
    // fonction indiquant si une erreur de chargmement survient :
    function indiquerErreur( event:Event ) {
    	trace(event);
    }
    stage_3.fla:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    // import des classes nécessaires :
    // nous importons les classes necessaires :
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLLoaderDataFormat;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.events.IOErrorEvent;
     
    // nous déclarons un objet URLLoader :
    var container:URLLoader = new URLLoader ();
     
    // nous créons un objet URLRequest qui contient l'url du fichier :
    //var adresse:URLRequest = new URLRequest ("image.jpg");
     
    // nous lançons le chargement du fichier, en indiquant l'adresse de celui ci par l'objet URLRequest :
    container.dataFormat = URLLoaderDataFormat.BINARY;
    //container.load(adresse);
     
    // définition des événements de l'objet container
    container.addEventListener(Event.COMPLETE, finDuChargement);
    container.addEventListener(ProgressEvent.PROGRESS, avancement);
    container.addEventListener(IOErrorEvent.IO_ERROR, indiquerErreur);
     
    // définition de la fonction éxecutée par l'événement COMPLETE :
    // ( déclenchée lorsque le chargement se termine )
    function finDuChargement ( event:Event ) {
    	var contenu = event.target.data;
    	creerLoader (contenu);
    }
     
    // fonction déclenchée à la fin du chargement URLLoader, qui ajoute un Loader sur la scene :
    function creerLoader ( datas ) {
    		var container:Loader = new Loader();
    		container.loadBytes(datas);
    		stage.addChild(container);
    } 
     
    // définition de la fonction éxecutée par l'événement PROGRESS :
    // déclenchée à chaque avancement du chargement )
    function avancement( event:Event) {
    	trace(event.target.bytesLoaded+" chargés sur "+event.target.bytesTotal);
    }
     
    // fonction indiquant si une erreur de chargmement survient :
    function indiquerErreur( event:Event ) {
    	trace(event);
    }
     
    fleche.addEventListener(MouseEvent.CLICK,onClick);
     
    function onClick(e:MouseEvent):void {
    	var adresse:URLRequest = new URLRequest ("couloir.swf");
    	//container.removechild();
    	container.load(adresse);
    }
     
    /*fleche.onRelease=function(){
        container.load("couloir.swf");
    }*/
     
    /*bureau_1.onRelease=function(){
    	loadMovie("piece_1.swf",container);
    }
     
    bureau_2.onRelease=function(){
    	loadMovie("piece_2.swf",container);
    }*/

  2. #2
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Par défaut
    Bonjour,

    Il te faut effacer le precedent avec un removeChild() par exemple.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 64
    Par défaut
    J'ai déjà essayé ça mais il y a un problème...

    Dans la fonction destinée à gérer le remplacement de l'animation au clic, je place la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    container.removeChild(adresse);
    Ce qui donne:

    fleche.addEventListener(MouseEvent.CLICK,onClick);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function onClick(e:MouseEvent):void {
    	container.removeChild(adresse);
    	var adresse:URLRequest = new URLRequest ("couloir.swf");
    	container.load(adresse);
    }
    Mais j'obtiens un message d'erreur de compilation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Appel à la méthode removeChild non définie, via la référence de type static flash.net: URLloader.container.removeChild(adresse)
    Kesako???

  4. #4
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Par défaut
    Ton container est un URLLoader et un removeChild n'est pas défini pour un type URLLoader.

    http://livedocs.adobe.com/flash/9.0_...l#removeChild()

    Sur quoi as tu fais un addChild() pour le premier swf ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 64
    Par défaut
    OK je commence à cerner le problème...

    En fait j'ai un premier fichier nommé index.fla dans lequel je crée un URLloader nommé container.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var container:URLLoader = new URLLoader ();
    Puis j'appelle ma première animation grâce à URLRequest:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var adresse:URLRequest = new URLRequest ("stage_3.swf");
    Puis je place tout simplement un load sur le container:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    container.load(adresse);
    Bref, dans cette deuxième animation, je place sur mes boutons le code censé remplacer "stage_3.swf" à l'intérieur de 'container' au sein de "index.swf"... Vous me suivez?

    Qyuant à moi, si je suis un peu, il semble que mes problèmes viennent du fait que j'utilise deux méthodes différentes pour introduire mes animations, c'est ça? Problème de conflit entre URLLoader et addchild? En tous cas je suppose que removeChild() ne risque pas de marcher si je ne suis pas passé auparavant par la case addChild(). C'est bien ça?

  6. #6
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Par défaut
    Citation Envoyé par lemilig
    Qyuant à moi, si je suis un peu, il semble que mes problèmes viennent du fait que j'utilise deux méthodes différentes pour introduire mes animations, c'est ça? Problème de conflit entre URLLoader et addchild? En tous cas je suppose que removeChild() ne risque pas de marcher si je ne suis pas passé auparavant par la case addChild(). C'est bien ça?
    Correct.

    Maintenant le problème reste que je ne me souviens plus comment faire dans ce cas là

    Juste une proposition :
    J'ai vu que tu faisais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stage.addChild(container);
    Tu peux essayer de faire un removeChild() là dessus et recommencer la même manipulation que tu as effectué pour ajouter le premier swf afin d'ajouter le second.

Discussions similaires

  1. Supprimer/Remplacer un contrôle par un autre
    Par Pragmateek dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 28/07/2009, 19h07
  2. Supprimer/Remplacer contenu d'une iframe
    Par devoluti0n dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2008, 10h34
  3. Comment supprimer/remplacer le sigle Microsoft Access?
    Par Philippe PONS dans le forum IHM
    Réponses: 1
    Dernier message: 08/10/2007, 12h55
  4. [C#] Comment supprimer/remplacer une couleur d'une image ?
    Par rannounna dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/05/2006, 12h37
  5. Réponses: 17
    Dernier message: 12/04/2005, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo