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 :

Chargement d'un .swf dans un menu AS3


Sujet :

ActionScript 3

  1. #1
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut Chargement d'un .swf dans un menu AS3
    Bonjours.

    Je vous explique vite fait mon problème ( N'hésitez pas à me le dire, si vous trouvez que je ne suis pas claire dans mes explications ^^... . )

    Alors voilà.
    Suite à un cours, j'ai eu l'occasion de programmer un petit menu en AS3, avec effet rebondissant ect... .
    Et le trouvant plutôt sympa ; j'ai souhaitée le réutiliser pour un autre projet... .

    Le problème est le suivant ; dans ce menu, on appelait des adresses-email... . Or moi, je souhaite charger des .swf... . Et je n'y arrive pas. J'ai bien testée avec "LoadMovie()" ; mais si ça ne me fait certes pas de bug, pour autant ça ne marche pas... .

    Est ce que vous sauriez comment faire ^^ ? D'avance merci... .

    P.S : Je vous fournis le code ( Ca peut toujours être utile ... . )

    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
    // animation du menu
    import fl.transitions.Tween;
    import fl.transitions.easing.Elastic;
     
    var lien:Array=new Array("Accueil.swf","Gallerie.swf","Animations.swf","Jeu_video.swf");
    function clicMenu(pEvt:MouseEvent):void {
    	navigateToURL(new URLRequest(pEvt.target.lien));
    }
     
    var donnees:Array=new Array;
    donnees.push({rubrique:"Accueil",loadMovie:"Accueil.swf"});
    donnees.push({rubrique:"Gallerie",loadMovie:"Gallerie.swf"});
    donnees.push({rubrique:"Animation",loadMovie:"Animations.swf"});
    donnees.push({rubrique:"Jeux Video",loadMovie:"Jeu_video.swf"});
     
    var legende:Array=new Array("Accueil","Gallerie","Animations","Jeux Video");
    var conteneur:Sprite=new Sprite();
    conteneur.x=150;
    conteneur.y=200;
    addChild(conteneur);
     
    function creerMenu():void {
    	var lng:int=donnees.length;
    	var monBouton:symbole1;
    	for (var i:int=0; i<lng; i++) {
     
     
    		monBouton=new symbole1();
     
    		var etatHaut : MovieClip = MovieClip(monBouton.upState);
    		etatHaut.monTitre.text=legende[i];
    		monBouton.upState = etatHaut;
    		monBouton.downState = etatHaut;
    		monBouton.overState = etatHaut;
    		monBouton.hitTestState = etatHaut;
    		monBouton.tween=new Tween(monBouton,"y",Elastic.easeOut,15,+ i*(monBouton.height),3,true);
    		monBouton.tweenSurvol=new Tween(etatHaut.fondBouton,"scaleX",Elastic.easeOut,1,1,2,true);
    		conteneur.addChild(monBouton);
    	}
    }
    creerMenu();
     
    conteneur.addEventListener(MouseEvent.ROLL_OVER,survolBouton,true);
    conteneur.addEventListener(MouseEvent.ROLL_OUT,quitteBouton,true);
     
    // animation du menu
    function survolBouton(Evt:MouseEvent):void {
    	var monTween:Tween=Evt.target.tweenSurvol;
    	monTween.continueTo(1.5,2);
    }
     
    function quitteBouton(Evt:MouseEvent):void {
    	var monTween:Tween=Evt.target.tweenSurvol;
    	monTween.continueTo(1,2);
    }

  2. #2
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Donc tu veux charger un swf dans un autre swf si j'ai bien compris ? Si oui voilà comment faire :

    Tu créés un clip que tu nommeras Zone_chargement par exemple (laisse le vide, inutile de le remplir) que tu mettras sur ta scène en lui donnant un nom ("loadZone" ici).

    Ensuite mets ce code ActionScript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var chargeur:URLLoader = new URLLoader();
    var url:URLRequest = new URLRequest("chemin/du/fichier.swf");
     
    loadZone.addChild(chargeur);
    chargeur.load(url);
    Et voilà, ça devrait marcher, en sachant que l'endroit où se trouve le point représentant le clip "loadZone" serait le coin supérieur gauche du fichier swf chargé.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut
    Merci pour ton aide ; mais ce n'est pas exactement ce dont j'ai besoin ^^.

    En fait ; j'ai fait un menu, et c'est lorsque l'on clique sur les boutons de ce menu que le .swf doit se charger ( Sauf que là, il ne le fait pas. ).
    Je ne pense donc pas avoir besoin de créer un clip sur la scène pour que ça se fasse ( Mais bon... si ça se trouve je me plante complètement, je débute en flash après tout... . ) ... .


    Edit :
    J'ai pris quand même le temps de tester ton bout de code ^^... . Et ça me donne cette erreur "1067: Contrainte implicite d'une valeur du type flash.net:URLLoader vers un type sans rapport flash.displayisplayObject."... .

  4. #4
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    En gros c'est ça que tu cherches à faire ?

    Lorsque tu clic sur le bouton "Astuces", ça charge un autre fichier swf.

    Si c'est ça, dit le moi et je peux te fournir la source (le fichier .fla)

  5. #5
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut
    Tu peux toujours m'envoyer la source ( Ca m'a effectivement l'air de ressembler à ce que je recherche. ) ^^... . Je testerais, et te dirais si c'est bien ça.

  6. #6
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Hop, voici la source

  7. #7
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut
    Bon... . J'ai pris ta source, et j'ai tentée de modifier mon code en conséquence... .
    Mais maintenant, ça me donne cette erreur : "1067: Contrainte implicite d'une valeur du type Array vers un type sans rapport Function."

    Pour plus de détail, voici le code tel qu'il est actuellement :

    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
    // animation du menu
     
     
    // import
    import fl.transitions.Tween;
    import fl.transitions.easing.Elastic;
     
     
    // variables
    var lien:Array=new Array("Accueil.swf","Galerie.swf","Animations.swf","Jeu_video.swf");
     
    var donnees:Array=new Array;
    donnees.push({rubrique:"Accueil"});
    donnees.push({rubrique:"Galerie"});
    donnees.push({rubrique:"Animation"});
    donnees.push({rubrique:"Jeux Video"});
     
    var legende:Array=new Array("Accueil","Galerie","Animations","Jeux Video");
     
    var conteneur:Sprite=new Sprite();
    conteneur.x=150;
    conteneur.y=200;
    addChild(conteneur);
     
     
    // functions
    function clicMenu(pEvt:MouseEvent):void {
    	gotoAndPlay(2);
    }
     
    function creerMenu():void {
     
    	var lng:int=donnees.length;
    	var monBouton:symbole1;
    	for (var i:int=0; i<lng; i++) {
     
            monBouton=new symbole1();
     
    		var etatHaut : MovieClip = MovieClip(monBouton.upState);
    		etatHaut.monTitre.text=legende[i];
     
    		monBouton.upState = etatHaut;
    		monBouton.downState = etatHaut;
    		monBouton.overState = etatHaut;
    		monBouton.hitTestState = etatHaut;
    		monBouton.tween=new Tween(monBouton,"y",Elastic.easeOut,15,+ i*(monBouton.height),3,true);
    		monBouton.tweenSurvol=new Tween(etatHaut.fondBouton,"scaleX",Elastic.easeOut,1,1,2,true);
     
    		conteneur.addChild(monBouton);
    	}
    }
    creerMenu();
     
    function survolBouton(Evt:MouseEvent):void {
    	var monTween:Tween=Evt.target.tweenSurvol;
    	monTween.continueTo(1.5,2);
    }
     
    function quitteBouton(Evt:MouseEvent):void {
    	var monTween:Tween=Evt.target.tweenSurvol;
    	monTween.continueTo(1,2);
    }
     
     
    //Events
    this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, lien);
     
    conteneur.addEventListener(MouseEvent.ROLL_OVER,survolBouton,true);
    conteneur.addEventListener(MouseEvent.ROLL_OUT,quitteBouton,true);

    P.S : Sans être une complète débutante en AS3, j'avoue avoir parfois un peu de mal à saisir toute les subtibilités du truc ... .

  8. #8
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Dans le code que tu as mis, je ne vois nul part le code servant à charger le fichier swf °o°

    Je te précise que dans les sources que je t'ai données, ce code se trouve sur les dernières images clés de la timeline (la première frame c'est un préloader)

    De plus, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, lien);
    Alors que tu n'as pas de fonction nommée lien

    Edit : mon code pour faire ce que tu veux faire est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //vars
    var loadit:Loader = new Loader();
     
    //functions
    function openAstuces(e:Event) {
    	loadit.unload();
    	loadit.load(new URLRequest("astuces.swf"));
    }
     
    //events
    bt_astuces1.addEventListener(MouseEvent.CLICK, openAstuces);
     
    //other
    loadArea1.addChild(loadit);
    Où loadArea est un MovieClip vide (sans rien dedans) placé sur ma scène qui correspond au coin supérieur gauche de mon astuces.swf.

  9. #9
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut
    Bon, là, c'est tout de suite plus clair. Merci encore... .

    Dernière question ( Et qui risque de paraitre un peu idiote, désolé -_-... . ) : le "bt_astuces1", il correspond à quoi exactement ?

  10. #10
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    C'est le nom que j'ai donné à mon bouton "astuce" sur la scène

  11. #11
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut
    Je devrais faire beta-testeuse de site en AS3 ; à chaque fois que je tente quelque chose, j'ai une nouvelle erreur qui apparait ... .

    Cette fois ça me donne :
    " TypeError: Error #1006: addEventListener n'est pas une fonction.
    at Accueil_fla::MainTimeline/Accueil_fla::frame1() "

  12. #12
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    A priori c'est que tu essais de faire un event listener sur quelque chose qui ne peut pas en recevoir.

    Tu peux mettre ton code ?

  13. #13
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut
    Voilà le code de mon menu... .

    Au passage ; je l'ais encore un peu bidouillé, et l'erreur qui s'affiche est à présent "TypeError: error"1010 Un terme n'est pas défini et n'as pas de propriété.
    at Accueil_fla::MainTimeline/Accueil_fla::frame1()


    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    // _ _ _ _ _ _ _ _ _ _ 
    // animation du menu
    // _ _ _ _ _ _ _ _ _ _ 
     
     
    // import
    // - - - - - - - - - -
    import fl.transitions.Tween;
    import fl.transitions.easing.Elastic;
     
     
    // variables
    // - - - - - - - - - -
    var lien:Array=new Array();
     
    var donnees:Array=new Array;
    donnees.push({rubrique:"Accueil"});
    donnees.push({rubrique:"Galerie"});
    donnees.push({rubrique:"Animation"});
    donnees.push({rubrique:"Jeux Video"});
     
    var legende:Array=new Array("Accueil","Galerie","Animations","Jeux Video");
     
    var conteneur:Sprite=new Sprite();
    conteneur.x=150;
    conteneur.y=200;
    addChild(conteneur);
     
    var chargement:Loader = new Loader();
    addChild(chargement);
     
     
    // functions
    //- - - - - - - - -
     
    // appelle les autres .swf
    function premier(evt:MouseEvent) {
     
    	var url:String = evt.target.name +".swf";
    	var urlReq:URLRequest = new URLRequest(url);
    	chargement.load(urlReq);
    }
     
    // créer l'apparence du menu
    function creerMenu():void {
     
    	var lng:int=donnees.length;
    	var monBouton:symbole1;
    	for (var i:int=0; i<lng; i++) {
     
            monBouton=new symbole1();
     
    		var etatHaut : MovieClip = MovieClip(monBouton.upState);
    		etatHaut.monTitre.text=legende[i];
     
    		monBouton.upState = etatHaut;
    		monBouton.downState = etatHaut;
    		monBouton.overState = etatHaut;
    		monBouton.hitTestState = etatHaut;
    		monBouton.tween=new Tween(monBouton,"y",Elastic.easeOut,15,+ i*(monBouton.height),3,true);
    		monBouton.tweenSurvol=new Tween(etatHaut.fondBouton,"scaleX",Elastic.easeOut,1,1,2,true);
     
    		conteneur.addChild(monBouton);
    	}
    }
    creerMenu();
     
    // créer les effets de rebondissement du menu
    function survolBouton(Evt:MouseEvent):void {
    	var monTween:Tween=Evt.target.tweenSurvol;
    	monTween.continueTo(1.5,2);
    }
     
    function quitteBouton(Evt:MouseEvent):void {
    	var monTween:Tween=Evt.target.tweenSurvol;
    	monTween.continueTo(1,2);
    }
     
     
     
     
    //Events
    // - - - - - - - - - -
    menu.donnees.addEventListener(MouseEvent.CLICK, premier);
    conteneur.addEventListener(MouseEvent.ROLL_OVER,survolBouton,true);
    conteneur.addEventListener(MouseEvent.ROLL_OUT,quitteBouton,true);

  14. #14
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 10
    Par défaut
    Désolé je double-post, mais il y a eu encore du nouveau... .

    Avec l'aide d'un prof on a repris le code à zéros ; et on a finit par trouver ce qui cloche ( Ouf ! ) !
    Donc techniquement mon menu marche... à ceci près que c'est codé un peu n'importe comment, et qu'on aimeraient bien nettoyer un peu tout ça ^^... .

    Alors apparemment, il faudrait trafiquer avec le nom des occurrences des boutons ; mais le problème principal vient du fait que je n'ai qu'un seul bouton, qui est appelé de la bibliothèque et multiplié ensuite par le script... .

    Une idée sur comment changer le nom de son occurrence ^^ ?

  15. #15
    Membre expérimenté Avatar de k1rby
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par défaut
    Ben tonObjet.name = "Nom", non ?

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut
    salut,

    voici un zip avec un exemple. Tu peux peut-être t'en inspirer. J'espère que ça t'aidera.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [AC-2007] Insérer un menu en .swf dans un formulaire Access 2007
    Par chatnet dans le forum IHM
    Réponses: 1
    Dernier message: 29/07/2009, 10h42
  2. Chargement d'un SWF externe dans une animation.
    Par doncho23 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 06/04/2009, 11h57
  3. [AS3] FrameRate d'un swf dans une animation
    Par Djaiffe dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 05/03/2009, 11h45
  4. Chargement de swf dans swf
    Par ultraboa dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 16/01/2009, 16h04
  5. Réponses: 4
    Dernier message: 15/12/2003, 17h46

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