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] Un bouton qui suit mon curseur...


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] Un bouton qui suit mon curseur...
    Hello,

    Voilà, j'aimerais réaliser l'effet suivant:
    http://www.wireframe.co.za/w1r3d.html

    j'ai dejà réussi à faire en sorte qu'un clip (un bête rond) suive mon curseur
    avec un effet élastique... seuleument, j'aimerais, comme sur le lien que j'ai donné, que que ce clip soit un bouton, ou qu'il contienne un bouton... et que, lorsque je clique dessus, il aille se placer à un endroit définit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    monClip.onEnterFrame = function() {
        if (monClip._x<=_xmouse) {
            monClip._x = monClip._x+(_xmouse-monClip._x+1)/10;
        } else {
            monClip._x = monClip._x-(monClip._x-_xmouse+1)/10;
        }
        if (monClip._y<=_ymouse) {
            monClip._y = monClip._y+(_ymouse-monClip._y+1)/10;
        } else {
            monClip._y = monClip._y-(monClip._y-_ymouse+1)/10;
        }
    };
    Merci pour votre talent et votre devouement!

  2. #2
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Salut,

    pour le rendre cliquable, rajoutes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    monClip.onRelease = function() {
       // On arrete le fait qu'il suive le curseur
      delete this.onEnterFrame;
       // On va le placer  en 10, 10
      this._x = 10;
      this._y = 10;
    }
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  3. #3
    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
    ah ben ça... je ne savais pas que l'on pouvait faire un onRelease à un clip!

    Et pour corser un peu, sais-tu comment faire en sorte que le bouton aille lentement se ranger en 10*10?

    Merci déjà en tous cas!


  4. #4
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Essaie un truc comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var _self = this;
    monClip.onRelease = function() {
       // On arrete le fait qu'il suive le curseur
      delete this.onEnterFrame;
       // On va le placer  en 10, 10
       _self.deplaceTo(10,10,20);
    }
     
    function deplaceTo(nX_:Number, nY_:Number, nDuree_:Number) {
       new mx.transitions.Tween(monClip, "_x", mx.transitions.easing.None.easeNone, monClip._x, nX_, nDuree_);
       new mx.transitions.Tween(monClip, "_y", mx.transitions.easing.None.easeNone, monClip._y, nY_, nDuree_);
    }
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  5. #5
    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
    eh beh... c'est la classe, y'a pas à dire!

    Je vais de ce pas me documenter sur sur ces concepts de "mx", "easing", et "transition"...

    ...puis, je vais tenter de faire en sorte qu'une fois le bouton placé en 10*10,
    il soit de nouveau cliquable. Ainsi, en cliquant dessus, il recommencerait à suivre mon curseur tjs comme dans l'exemple (que je trouve fort sympatique!)

    Penses-tu que je dois jouer avec la ligne du temps, et trouver le moyen qu'une fois le bouton placé en 10*10, on soit sur la frame 2, puis, avec l'action onRelease (par exemple) on retourne à la frame 1 pour recommencer la fonction onEnterFrame de la frame 1?...

    Merci pour tt ça!

  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
    oui, bon, je viens d'essayer ça:

    après la fonction "deplaceTo", j'ai donné l'instruction "gotoAndPlay (2);" + "stop();" et sur la frame 2, j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    monClip.onEnterFrame = function() {
     
      this._x = 10;
      this._y = 10;
    }
     
    stop();
    ça marche plus ou moin... seulement, le bouton ne se déplace plus "lentement" pour se mettre en 10*10 (il n'y a plus de transition) et, il tremblotte lorsqu'il est placé en 10*10 ...

  7. #7
    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
    en fait, je devrais dire... Fais ton "deplaceTo" jusqu'en 10*10, puis gotoAndPLay (2)! ...Seulement, il fait les 2 en meme temps!

  8. #8
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Je sais plus trop si cela a évolué depuis Flash 8 et comme dans Flash mx2004, ces fonctions ne sont pas documentées je peux pas vérifier
    Mais dans flash 8, tu as un evenement onMotionFinished qui permet d'éxécuter du code à la fin d'un tween.

    Donc essaye :

    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
    import mx.transitions.Tween;
     
    var _self = this;
    monClip.onRelease = function() {
       // On arrete le fait qu'il suive le curseur
      delete this.onEnterFrame;
       // On va le placer  en 10, 10
       _self.deplaceTo(10,10,20);
    }
     
    function deplaceTo(nX_:Number, nY_:Number, nDuree_:Number) {
       var tw:Tween = new Tween(monClip, "_x", mx.transitions.easing.None.easeNone, monClip._x, nX_, nDuree_);
       new Tween(monClip, "_y", mx.transitions.easing.None.easeNone, monClip._y, nY_, nDuree_);
     
      tw.onMotionFinished = function() {
          trace("Fin du Tween");
          monClip.onRelease = function() {
             trace("J'ai cliqué :P");
          }
       }
    }
    Sinon en règle générale, j'essaie d'éviter de jouer sur la timeline
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  9. #9
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    J'avais pas vu tes 2 dernières réponses, mais du coup je me demande si c'est ce que tu veux

    Peux-tu expliquer à nouveau ce que tu veux faire ?

    A quoi sert ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     monClip.onEnterFrame = function() {
     
      this._x = 10;
      this._y = 10;
    }
    Ton clip doit déjà être en 10,10 après le tween, non ?
    Bref je crois que j'ai pas tout compris
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  10. #10
    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
    c'est vrais ça! Pourquoi j'ai mis ce code là à la frame 2...?
    J'ai du me lever trop tôt!

    non, en fait, et pour être +- logique par rapport à mes précédententes questions, je voulais faire en sorte, qu'une fois arrivé à la frame 2, et avec l'évenement (onRelease), on puisse retourner à la frame 1... pour que le clip suive à nouveau le pointeur... donc ce serait plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    monClip.onRelease = function() {
     gotoAndPlay (2);
    }
    stop();
    Mais il me tarde d'essayer le code que tu viens de m'envoyer...

  11. #11
    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
    domage... je crois que flash mx 2004 ne reconnait pas 'onMotionFinished'

  12. #12
    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
    c'est bien ce que tu pensais... je crois que je vais donc télécharger la version d'évaluation de flash8 !

  13. #13
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    C'est pas insurmontable

    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
     
    import mx.transitions.Tween;
     
    var _self = this;
    monClip.onRelease = function() {
       // On arrete le fait qu'il suive le curseur
      delete this.onEnterFrame;
       // On va le placer  en 10, 10
       _self.deplaceTo(10,10,20);
    }
     
    function deplaceTo(nX_:Number, nY_:Number, nDuree_:Number) {
       var tw:Tween = new Tween(monClip, "_x", mx.transitions.easing.None.easeNone, monClip._x, nX_, nDuree_);
       new Tween(monClip, "_y", mx.transitions.easing.None.easeNone, monClip._y, nY_, nDuree_);
     
       monClip.onEnterFrame = function() {
          if(this._x == nX_ && this._y == nY_) '
              delete this.onEnterFrame;
              this.onRelease = function() {
                  trace("J'ai cliqué :P");
              }
          }
       }
    }
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  14. #14
    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
    je viens d'essayer ton code (avec mon nouveau flash8!) ,

    nickel, y 'a pas d'erreur, seuleument, une fois placé en 10*10, le bouton ne veux pas se remettre dans sa position initiale lorsque je clique dessus(cad, recommencer à suivre mon curseur)... et puis, je ne sais pas pourquoi (peut-être as-tu la meme chose...) le bouton tremblotte toujours lorsqu'il est en 10*10!

    ps: j'ai l'affreuse impression que tu fais tout le boulôt à ma place... je crois que c'est parceque ça dois être le cas! N'empêche, j'essaye tant bien que mal de comprendre le code!

  15. #15
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Citation Envoyé par gregooo
    je viens d'essayer ton code (avec mon nouveau flash8!) ,

    nickel, y 'a pas d'erreur, seuleument, une fois placé en 10*10, le bouton ne veux pas se remettre dans sa position initiale lorsque je clique dessus(cad, recommencer à suivre mon curseur)...
    Normal je lui dis juste de faire un trace pour que tu n'es pas l'impression du PS

    Citation Envoyé par gregooo
    et puis, je ne sais pas pourquoi (peut-être as-tu la meme chose...) le bouton tremblotte toujours lorsqu'il est en 10*10!
    Ben je sais pas, je teste pas J'essaierai ce soir mais cela devrait pas
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  16. #16
    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
    ah ben oui... bien joué ça!

    ...donc, tu tappes le code sans même l'essayer?... aïe! j'ai mal à la tête rien que d'y peser

  17. #17
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Citation Envoyé par gregooo
    ah ben oui... bien joué ça!

    ...donc, tu tappes le code sans même l'essayer?... aïe! j'ai mal à la tête rien que d'y peser
    lol

    Je viens de tester, non ca tremble pas chez moi
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  18. #18
    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
    Hello!

    Ca y est! Il ne tremblotte plus... mon clip était en fait un bouton... je crois
    que ceci explique celà!

    Il n'empêche, je n'arrive toujours pas à avancer dans mon shmilblik... (pauvre de moi, je ne suis qu'un assisté! ) Jusqu'ici, mon clip se place bien en 10*10 lorsque je clique dessus... j'ai rajouté le code qui importe mon menu en meme temps que je clique dessus (sur le meme onRelease).
    Le mieux serait en fait que mon menu soit importé ds un clip vide lorsque le clip arrive en 10*10... et non sur l'action onRelease, mais ça, déjà, je n'y arrive pas.

    Ensuite, la cerise sur le gâteau serait que lorsque je re-clique dessus, le menu disparaisse et que le clip recommence à suivre mon curseur...

    Exactement comme dans cet exemple d'ailleurs! http://www.wireframe.co.za/w1r3d.html

    Je sens qu'une boucle serait idéale!

    Pourrais-tu me mettre sur la voie?

    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
     
    monClip.onEnterFrame = function() {
    	if (monClip._x<=_xmouse) {
    		monClip._x = monClip._x+(_xmouse-monClip._x+1)/10;
    	} else {
    		monClip._x = monClip._x-(monClip._x-_xmouse+1)/10;
    	}
    	if (monClip._y<=_ymouse) {
    		monClip._y = monClip._y+(_ymouse-monClip._y+1)/10;
    	} else {
    		monClip._y = monClip._y-(monClip._y-_ymouse+1)/10;
    	}
    };
     
    import mx.transitions.Tween;
     
    var _self = this;
    monClip.onRelease = function() {
       // On arrete le fait qu'il suive le curseur
      delete this.onEnterFrame;
     
       // On va le placer  en 10, 10
       _self.deplaceTo(10,30,20);
    }
     
    function deplaceTo(nX_:Number, nY_:Number, nDuree_:Number) {
       var tw:Tween = new Tween(monClip, "_x", mx.transitions.easing.None.easeNone, monClip._x, nX_, nDuree_);
       new Tween(monClip, "_y", mx.transitions.easing.None.easeNone, monClip._y, nY_, nDuree_);
     
      tw.onMotionFinished = function() {
     
      }
       var cible_menu:MovieClip = this.createEmptyMovieClip( 'cible_menu', 2);
    cible_menu.loadMovie("menu.swf");
    cible_menu._x=270;
    cible_menu._y=27;
     
      }
     
    stop();

Discussions similaires

  1. [FLASH MX2004] Problème image qui restent pas fixe
    Par °°° Zen-Spirit °°° dans le forum Flash
    Réponses: 4
    Dernier message: 14/06/2006, 21h16
  2. Réponses: 4
    Dernier message: 20/03/2006, 08h33
  3. [FLASH MX2004] Double bouton ?
    Par Vintage dans le forum Flash
    Réponses: 2
    Dernier message: 24/10/2005, 15h21
  4. [FLASH MX2004] Lien bouton
    Par Ticoche dans le forum Flash
    Réponses: 4
    Dernier message: 28/09/2005, 22h51
  5. [FLASH MX2004] Clip bouton
    Par Ticoche dans le forum Flash
    Réponses: 6
    Dernier message: 01/11/2004, 11h30

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