Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Flash] - Action lorsque bouton souris enfoncé + rollOver

Sujet résolu
    25 septembre 2006 à 21:54:07

    Bonjour à tous !

    J'ai un petit soucis qui me donne du fil à retordre. Peut-être que vous pourrez m'aider...

    Alors voilà je cherche à effectuer une action dans la situation suivante :

    - Bouton de souris enfoncée
    ET
    - Passage de la souris sur un bouton

    C'est un vrai casse-tête, j'ai essayé plein de choses sans y parvenir. Les deux évenements ont l'air d'être incompatible par nature, en effet, le Rollover est dit TRUE lorsque la souris passe sur le bouton, mais le bouton de la souris ne doit pas être enfoncé !

    J'avais justement essayer d'afficher le bouton que lorsque le bouton de la souris est enfoncé et d'ajouter un évenement Rollover sur ce dernier. Mais comme expliquer avant, ça ne marche pas... :euh:

    Merci d'avance pour vos lumières :)

    A+ Werzzer
    • Partager sur Facebook
    • Partager sur Twitter
      25 septembre 2006 à 22:30:29

      Bon je ne comprends pas très bien... Le lien entre tes deux 'conditions' est un ET ou un OU ? Autrement dit, faut-il que la souris soit enfoncée tout en étant sur un bouton, ou bien une des deux conditions est suffisante ?
      • Partager sur Facebook
      • Partager sur Twitter
        25 septembre 2006 à 22:35:03

        Na, les deux doivent être vérifié. Donc c'est bien un "Et". Et c'est bien là le problème !
        • Partager sur Facebook
        • Partager sur Twitter
          26 septembre 2006 à 10:59:18

          un fonction conditionnelle ne pourrait-elle pas faire l'affaire ?

          style :

          if (_root.onMouseDown & monClip.onRollOver) {
          //ta fonction
          };


          On ne prend pas la fonction OnPress qui est un évènement localisé, mais la fonction onMousDown qui détècte tout appui sur une touche de la souris sur la scène.

          litéralement sa se traduit par :

          Si (on appuye sur un touche de la souris ET QUE monClip se fait survolé par la souris) {
          on déclanche la fonction
          };

          si j'ai bien compris sa doit être sa...et sa devrait normalement marcher

          PS : joli tuto Webanix
          • Partager sur Facebook
          • Partager sur Twitter
            26 septembre 2006 à 11:00:38

            D'après mes essais ça ne fonctionne pas, car l'évenement Rollover est TRUE lorsque la souris passe sur le bouton (ou le clip) mais la souris ne doit pas être enfoncée !

            Bon je vais préciser mon truc ! ^^ Il s'agit d'un jeu flash que je crée. Le but est de pouvoir jouer d'un instrument à corde. A la base, je pensais lancer le son de la corde au moment où l'on clique sur le bouton de la corde. Pour un rapprochement plus réel, j'ai décideé de lancer la note quand le bouton de la souris est enfoncé ET que l'on passe sur la corde. Ansi, si l'on clique (quelque soit l'endroit sur la scène) et que l'on passe sur chacune des cordes (en gardant cliqué), chaque note est jouée ! Autrement, pour jouer chacune des notes il faudrait cliquer sur chacune d'elle ce qui est pas terrible ! o_O

            Voilà

            a+ Werzzer
            • Partager sur Facebook
            • Partager sur Twitter
              26 septembre 2006 à 11:44:04

              Perso je penserai à la fonction hitTest...

              mais il faut créer un clip qui se déplace en même temps que la souris...on va l'appeler archet

              sous la forme :

              si (touche souris abaissée ET un clip touche la corde ) {
              alors on joue le son de la corde heurtée;
              }

              sa donnerai sa (en gros) :

              if (monClip.onPress & archet.hitTest(corde[n])) {
              ta fonction
              }



              mais tout ceci implique que les cordes soient créées dinamyquement...si tu sais pas comment faire mon explication va te sembler vraiment sommaire...
              • Partager sur Facebook
              • Partager sur Twitter
                26 septembre 2006 à 13:08:21

                Je ne suis pas totalement sur d'avoir compris ce que tu cherchais... mais as-tu tenter de faire un truc de ce genre ? :


                corde.onMouseDown = corde.onRollOver = function ()
                {
                   // Traitement voulu à ce moment-là
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  26 septembre 2006 à 13:36:51

                  i-gloo, j ai bien compris ce que tu me propose, j y avais également pensé. Meme dans cette optique, on peut simplement utiliser un hitTest entre la corde et deux coordonnées (en l occurence _xmouse et _ymouse).

                  Mais mon problème est que j utilise des boutons pour les cordes et non pas des clips. Car j ai besoin d une zone cliquable plus grande que la corde en elle-même...

                  A+ Werzzer
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 septembre 2006 à 14:27:58

                    Si tu crée un grand boutton qui recouvre toute tes cordes peut-être que sa le fera...

                    comme sa quand tu clic sa agit sur le boutton et le rollover agis lorsque tu passe sur une corde...

                    (je suis pas sure que sa marche...)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 septembre 2006 à 19:55:31

                      J'ai trouvé :p , merci à tous pour vos idées, voilà la solution :

                      Créer un clip carré recouvrant la zone désirée (correspond à une zone sensitive ou l'état "cliqué" d'un bouton), insérer le code suivant dans le clip :


                      onClipEvent(load){
                              this._alpha = 0; //On rend le clip transparent
                              souris_down = false; // variable renseignant sur l'action d' "avoir le bouton de la souris enfoncé"
                              souris_hover = false; // variable renseignant sur l'action de "placer le pointeur sur le clip"
                      }
                      onClipEvent(mouseDown){
                              souris_down = true; // Si le bouton de la souris est enfoncé
                      }
                      onClipEvent(mouseUp){
                              souris_down = false; // Si le bouton de la souris n'est pas enfoncé
                      }

                      onClipEvent(enterFrame){
                              if (this.hitTest(_level0._xmouse, _level0._ymouse, true)){ //si la souris pointe sur le clip
                                      souris_hover = true;
                              }
                              else { //si la souris ne pointe pas sur le clip
                                      souris_hover = false;
                              }
                              if (souris_hover && souris_down){ //si les deux états sont vérifiés
                                      //***Action***
                                      trace("ok");
                              }       
                      }


                      Comme quoi chaque problème à sa solution ! :lol:

                      A+ Werzzer
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [Flash] - Action lorsque bouton souris enfoncé + rollOver

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown