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

Flash Discussion :

[FLASH MX2004] Superposer des boutons à un clip


Sujet :

Flash

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 29
    Points : 11
    Points
    11
    Par défaut [FLASH MX2004] Superposer des boutons à un clip
    Salut ,

    ...alors voila, je voudrais reproduire l'effet du menu de la page d'accueil
    de Group94 (http://www.group94.com/).

    Vous voyez?... au-dessus du logo Group94.

    Lorsque la souris passe sur la zone du menu, un cadre noir apparait. Puis, une liste de boutons se superpose au cadre.

    Faut-il utiliser un 'LoadMovie' (donc, placer un clip avec des boutons sur le clip composé du cadre noir)?

    ... ou alors pas!?

    Si vous avez la réponse, je suis preneur...

    GregooO.

  2. #2
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    Welcome gregooo,
    Bon j'ai un peu de mal à cibler ton problème, lors du survol, tu a un clip qui s'agrandi et alros ? tu veux le reduire ? si tu veux juste qu'il monte moin heut, tu modifie ton clip ? je vois pas de trop la...

  3. #3
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello

    Le menu c'est du "full dynamique" avec des api dynamique de dessin dans un clip vide.....

    Exemple :

    1 - tu ouvres un nouveau fla

    2 - tu vas sur le calque du scénario principal et tu le renommes "code"

    3 - tu sélectionne l'image clé 1

    4 - tu appuies sur F9 pour ouvrir le panneau d'action

    5 - tu tapes :
    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
     
    MovieClip.prototype.drawRectangle = function (w, h, color) {
         if (!isNaN(w)) this.w = w ;
         if (!isNaN(h)) this.h = h ;
         if (!isNaN(color)) this.color = color ;
         this.clear() ;
         this.beginFill(this.color, 100) ;
         this.lineTo(this.w, 0) ;
         this.lineTo(this.w, this.h) ;
         this.lineTo(0, this.h) ;
         this.lineTo(0, 0) ;
         this.endFill() ;
    }
     
    createEmptyMovieClip("monRectangle", 1) ;
    monRectangle.drawRectangle(200, 10, 0xFF0000) ;
    monRectangle._x = 25 ;
    monRectangle._y = 25 ;
    Voilà ... tu peux lancer l'animation avec CTRL + ENTREE et tu regardes ce qui se passe !

    Pour l'animation si tu as au moins FLASHMX2004 tu peux utiliser la classe mx.transitions.Tween, j'ajoute du code dans le code au dessus pour un petit exemple :
    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
     
    import mx.transitions.Tween ;
    import mx.transitions.easing.* ;
     
    MovieClip.prototype.drawRectangle = function (w, h, color) {
         if (!isNaN(w)) this.w = w ;
         if (!isNaN(h)) this.h = h ;
         if (!isNaN(color)) this.color = color ;
         this.clear() ;
         this.beginFill(this.color, 100) ;
         this.lineTo(this.w, 0) ;
         this.lineTo(this.w, this.h) ;
         this.lineTo(0, this.h) ;
         this.lineTo(0, 0) ;
         this.endFill() ;
    }
     
    var tw:Tween ;
     
    var mc = createEmptyMovieClip("monRectangle", 1) ;
    mc.drawRectangle(200, 10, 0xFF0000) ;
    mc._x = 25 ;
    mc._y = 25 ;
    mc.onRollOver = function () {
    	if (tw.isPlaying) tw.stop() ;
    	tw = new Tween (this, "h", Back.easeOut, this.h, 250, 24) ;
    	tw.addListener(this) ;  
    }
    mc.onRollOut = function () {
          if (tw.isPlaying) tw.stop() ;
          tw = new Tween (this, "h", Bounce.easeOut, this.h, 10, 24) ;
          tw.addListener(this) ;  
    }
    mc.onMotionChanged = function ( tw ) {
    	trace (tw) ;
          this.drawRectangle(null, this.h) ;
    }
    Voilà .. tout cela pour dire que pour réaliser cela... pas besoin de "loadMovie" (aucun rapport car si tu lis le contenu de l'aide de flash à ce sujet tu verras qu'en fait cela sert à charger des images ou des swf externes.. ici visuellement cela n'a aucun rapport ! ... Faut juste que tu lises doucement l'aide de flash pour apprendre à te servir de l'actionscript et surtout il faut lire tout ce qui concerne la classe MovieClip !!!

    EKA+

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    Waouw... He beh... j'ai encore du chemin!

    Merci à vous deux (heu... surtout à toi ekameleon!...d'ailleurs! ).

    J'ai bien observé ton code. Alors, pour essayer de le comprendre, j'ai fait qques commentaires. Peux tu me dire si je suis sur la bonne voies?

    Mais alors (la grosse question) comment fais tu pour superposer des boutons à ce mc? Pour qu'ils apparaissent d'un coup, sur le rectangle, au moment où tu passes la souris sur ce mc?... Cette liste de boutons doit être placer au préalable dans un autre clip ou doivent il être inclus dans le code de ce premier mc(rectangle)?

    import mx.transitions.Tween ;
    import mx.transitions.easing.* ;

    MovieClip.prototype.drawRectangle = function (w, h, color) {

    La, tu prends la classe MovieClip, puis (à l'intérieur de celle-ci, tu prends la classe prototype,
    puis la classe drawRectangle; et tu déclare 3 variables au rectangle que tu es en train de créer(w,h,color).

    if (!isNaN(w)) this.w = w ;
    if (!isNaN(h)) this.h = h ;
    if (!isNaN(color)) this.color = color ;

    La, je ne comprends pas (!isNaN())...! Mais le 'this' fait référence au rectangle que tu crées.

    this.clear() ;
    heu, le 'clear' veut dire que le rectangle occupe un espace libre? Si c'est le cas, je ne vois pas ce que ça veut dire...


    this.beginFill(this.color, 100) ;
    tu déclare la variable de la couleur de remplissage du rectangle au début (mais, pourquoi 100?)

    this.lineTo(this.w, 0) ;
    this.lineTo(this.w, this.h) ;
    this.lineTo(0, this.h) ;
    this.lineTo(0, 0) ;

    Tu mets la lareur(w) et la hauteur(h) à 0.

    this.endFill() ;
    La, tu déclare la variable de la couleur de remplissage de la fin...
    }

    ... en fait, jusqu'ici, tu as déclaré toutes tes variables...

    var tw:Tween ;
    La, tu traduis la classe 'Tween' par 'tw'.

    var mc = createEmptyMovieClip("monRectangle", 1) ;
    La, tu traduis la variable 'createEmptyMovieClip' par 'mc'puis, tu nomes ce mc "monRectangle"
    et tu n'en spécifie qu'un seul ('1').

    mc.drawRectangle(200, 10, 0xFF0000) ;
    La, tu définis les variable de 'drawRectangle' que tu as déclaré plus haut et tu les appliquent a mc.
    ---Donc, un MovieClip vide composé d'un rectangle de 200 sur 10 et de couleur 0xFF0000.---

    mc._x = 25 ;
    mc._y = 25 ;

    Tu définis la position de ce mc

    mc.onRollOver = function () {
    if (tw.isPlaying) tw.stop() ;
    tw = new Tween (this, "h", Back.easeOut, this.h, 250, 24) ;
    tw.addListener(this) ;
    }

    La, tu définis ce qu'il ce passe lorsque tu passe avec la souris au dessus du mc.
    heu... la hauteur du rectangle passe à 250 avec une amplitude de 24? (effet élastique)

    mc.onRollOut = function () {
    if (tw.isPlaying) tw.stop() ;
    tw = new Tween (this, "h", Bounce.easeOut, this.h, 10, 24) ;
    tw.addListener(this) ;
    }

    La, tu définis ce qu'il ce passe lorsque la souris sort du champ du mc.
    et heu... la hauteur du rectangle repasse à 10, toujours avec un rebonds sur une hauteur de 24?

    mc.onMotionChanged = function ( tw ) {
    trace (tw) ;
    this.drawRectangle(null, this.h) ;
    }


    Merci ...et Merci!

  5. #5
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello

    1 - un prototype c'est un objet (pas une classe) dans lequel on peut stocker des méthodes et des propriétés.. par défaut un MovieClip c'est une instance de la classe MovieClip .. donc il possède les méthodes et propriété de sa classe (stockés dans le prototype de la classe)
    Si tu tapes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    trace (MovieClip.prototype) ;
    tu vois que flash renvois un objet !

    Quand tu ajoutes une méthode (une fonction) à cet objet automatiquement toutes les instances de la classe vont posséder cette méthode !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MovieClip.prototype.speak = function (msg) {
         trace (this+ " >> " + msg) ;
    }
     
    clip1.speak("coucou") ;
    clip2.speak("hello") ;
    avec clip1 et clip2 des noms d'occurence de clips sur ta scène !

    PS : Quand tu comprends pas un truc dans le code que je tape, sélectionne le mot avec la souris et appui sur F1 !

    Va dans l'aide de flash, dans le Guide de référence du language et cherche la classe MovieClip !!! c'est super important tu verras tout ce qui concerne cette classe (méthodes , propriétés, api de dessin dynamique, événement etc...). Faut lire.. là dessus je peux rien pour toi si tu le fais pas

    Tu écris :
    this.lineTo(this.w, 0) ;
    this.lineTo(this.w, this.h) ;
    this.lineTo(0, this.h) ;
    this.lineTo(0, 0) ;
    Tu mets la lareur(w) et la hauteur(h) à 0.
    Non ! lis dans l'aide comment fonctionne la méthode lineTo de la classe MovieCLip et tu vas comprendre

    Quand j'écris :
    Là je traduis pas.. je déclare !! c'est à dire que ma variable "tw" va avoir pour type la classe Tween !! Comme cela si plus loin dans le code j'essai de taper :
    Flash va me renvoyer une erreur quand je vais compiler l'animation et me dire que là j'essai de donner pour valeur à ma variable un String au lieu d'un Tween !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var mc = createEmptyMovieClip("monRectangle", 1) ;
    Pareil .. lis l'aide...
    mc est une "référence", ou un raccourci vers mon clip que je viens de créer dynamiquement (clip vide) avec createEmptyMovieClip
    pour tester ce qu'il se passe tu peux utiliser partout dans ton code la fonction trace()...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var mc = createEmptyMovieClip("monRectangle", 1) ; 
    trace (">>> mc : " + mc) ;
    C'est intéressant de voir ce qu'il se passe tu verras que mc en fait c'est _level0.monRectangle... mais comme je veux pas taper à chaque fois _level0.monRectangle je fais une variable temporaire "mc" c'est plus court à taper

    Voilà.. continue ta lecture de l'aide

    eKA+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    Ok, je m'y mets de suite! :o

    Un grand merci pour ces réponses rapides et éclairantes!!

    Je reviens après avoir digéré la doc

    GregooO.

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/03/2007, 16h12
  2. [FLASH MX2004] Lecture des parametres de l'url
    Par matN59 dans le forum Flash
    Réponses: 5
    Dernier message: 23/06/2006, 13h30
  3. Réponses: 9
    Dernier message: 07/10/2005, 16h47
  4. [FLASH MX2004] Gestion des clips
    Par laurent1 dans le forum Flash
    Réponses: 6
    Dernier message: 28/11/2004, 10h53
  5. [FLASH MX2004] Hierarchisation des actions
    Par bolo dans le forum Flash
    Réponses: 9
    Dernier message: 06/11/2003, 16h02

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