Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mouvement sourie

Sujet résolu
    26 novembre 2011 à 23:01:48

    Bonjour :)

    J'ai une petite question à vous poser (que certainement bcp ne se sont jamais posé en javascript)
    Est-il possible de faire en sorte que la souri ne puisse bouger que sur les abscisses (x) ou les ordonnées(y)?

    Merci d'avance
    Fab.
    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2011 à 23:32:35

      Non, par contre, rien ne t'empêche de le cacher en utilisant une image transparente comme curseur, et de créer un deuxième curseur que tu piloteras en Javascript sur un des deux axes en fonction des déplacements de la souris.
      • Partager sur Facebook
      • Partager sur Twitter
        27 novembre 2011 à 3:22:09

        Si c'est pour limiter le déplacement d'un élément par l'utilisateur, oui c'est possible.

        Si c'est pour limiter le déplacement du curseur en lui-même, non, fort heureusement le Javascript n'a pas ce pouvoir.

        @Geoffrey: WTF ?
        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2011 à 12:29:12

          En gros.

          parent{cursor: url(blank.cur), default} /* soient "parent" le sélecteur d'un parent, "blank.cur" une image transparente (au format .cur pour compatibilité IE) et "default" un fallback (nécessaire à la prise en compte du CSS) */
          


          var HAUTEUR = 200, // ici on décide de déplacer le curseur sur l'axe des abscisses, donc on cale la position verticale avec une constante.
          curseur = document.createElement("img");
          curseur.src="curseur.png";
          curseur.style.cssText = "position: absolute; top: "+HAUTEUR+"px; left: 0px;";
          document.body.appendChild(curseur);
          
          parent.onmousemove = function(event){
             var pos = getMousePosition(event); // soit getMousePosition() une fonction crossbrowser renvoyant un objet de coordonnées	
             curseur.style.left= faire_un_truc_avec(pos.x)+"px"; // soit faire_un_truc_avec() une fonction qui adapte les coordonnées de la souris aux besoins du script (coef, constante...)
          }
          


          Je ne dis pas que ça limite effectivement le déplacement du curseur, mais ça simule l'effet. Si ça doit s'intégrer dans un jeu ou autre, il n'y a pas besoin que ce faux curseur déclenche des événements. Tout peut être géré de façon globale.
          • Partager sur Facebook
          • Partager sur Twitter
            27 novembre 2011 à 14:46:15

            Ok! Merci de vos réponses. Finalement j'ai trouvé une autre alternative à mon problème.

            @Golmote : Je suis entrain de créer un lecteur qui li des musique grâce à soudmanager 2.
            Pas de souci pour les fonctionnalités, tous marche très bien.
            Je rencontre un autre problème par contre (sur le drag and drop)
            J'ai créé un DIV qui informe du volume sonore que peut prendre l'attribut "setVolume" (un événement est lié à ce DIV : mousedown). ID du div = "insert_son"
            mouseup et mousemove sont lié à "document"

            A l’intérieur de ce DIV j'en est un autre (DIV) qui lui représente le curseur de déplacement (un événement mouseodwn associé à ce div) ID du div = "ttt"

            Le problème que je rencontre est le suivant :
            - Lorsque je "mousedown" sur le 1er DIV ("insert_son") et que je "mousemove", pas de souci, sa marche nikel !
            - Par contre si je fait la même manip sur le 2eme DIV ("ttt"), le mousemove marche mais que pour la première manipulation (cad que si je réitère ma manip mousedown puis mousemove sur le DIV ttt, le curseur change en "le rond barré" d'interdiction de déplacer un élément)

            code HTML :
            <div id='insert_son' style='background-position : -100px;'>
                 <div id='ttt' style='margin-top : -4px; margin-left : -5px; z-index: -10'></div>
            </div>
            


            Code JS :
            insert_son.addEventListener('mousedown', function(e){
            	position_b = e.clientX - 159;
            	if((e.clientX - 159)<=100 && (e.clientX - 159)>=0){
            			var volume = playlist[current].setVolume(e.clientX - 159);
            			insert_son.setAttribute('style', 'background-position :' + (-100 + e.clientX - 159) + 'px;')
            				insert_son.getElementsByTagName('div')[0].setAttribute('style', 'margin-top : -4px; margin-left :' + (e.clientX - 159-5) + 'px');
            				act_vol = parseInt(e.clientX - 159);
            			}
            	},false)
            			
            ttt.addEventListener('mousedown', function(e){
            	position_b = e.clientX - 159;
            	if((e.clientX - 159)<=100 && (e.clientX - 159)>=0){
            		var volume = playlist[current].setVolume(e.clientX - 159);
            		insert_son.setAttribute('style', 'background-position :' + (-100 + e.clientX - 159) + 'px;')
            		insert_son.getElementsByTagName('div')[0].setAttribute('style', 'margin-top : -4px; margin-left :' + (e.clientX - 159-5) + 'px');
            		act_vol = parseInt(e.clientX - 159);
            	}
            },false)
            			
            		
            			
            document.addEventListener('mouseup', function(){
            	position_b = null;
            },false)
            			
            document.addEventListener('mousemove', function(e){
            	if(position_b){
            		if((e.clientX - 159)<=100 && (e.clientX - 159)>=0){
            			var volume = playlist[current].setVolume(e.clientX - 159);
            			insert_son.setAttribute('style', 'background-position :' + (-100 + e.clientX - 159) + 'px;')
            			insert_son.getElementsByTagName('div')[0].setAttribute('style', 'margin-top : -4px; margin-left :' + (e.clientX - 159-5) + 'px');
            			act_vol = parseInt(e.clientX - 159);
            		}
            	}
            },false)
            


            Si quelqu'un à une idée du pourquoi du comment... :)
            Merci
            Fab.
            • Partager sur Facebook
            • Partager sur Twitter
              27 novembre 2011 à 15:48:49

              Tu devrais faire un preventDefault() dans tes deux mousedown.
              • Partager sur Facebook
              • Partager sur Twitter
                27 novembre 2011 à 15:59:29

                Lol! se n'était que ça... Merci ! :)

                Une autre question qui concerne cette fois un peu plus les fonctionnalité de soundManager 2.

                En regardant le code que tu propose pour le lecteur, je m'aperçois que pour mute ou unmute le son tu ne te souci pas de savoir si lorsque l'on fait next ou precedent, le playlist[current+1 ou -1] sera muté ou non...

                Chez moi, le mute et unmute ne marche que sur le playlist[current] (donc en cour de lecture).

                Pourquoi avec ton code sa marche sur tous... ?

                Merci d'avance ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  27 novembre 2011 à 16:46:57

                  Si tu as pris la dernière version de SM2, il y a peut-être eu des changements à ce sujet ?

                  Tu as une fonction muteAll et unmuteAll je crois, sinon ? Elles feraient peut-être ce que tu demandes ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 novembre 2011 à 19:26:09

                    non apparemment muteALL et unmuteAll ne fonctionne pas.

                    J'ai rajouté un p'tit bout de code dans lire[current]

                    if(muted == true){ 
                    	playlist[current].mute() 
                    }
                    if(muted == false){
                    	playlist[current].unmute() 
                    	muted == 'none';
                    }
                    


                    Par contre quand j'actionne le bouton mute avant la lecture de la 1ère chanson :
                    Si je lance la chanson et que je veux unmute, la chanson en cour de lecture ne pourra être unmute...
                    Mystère et boule de gomme...

                    J'ai essayé de placer le code dans whileloading et whileplaying, le résultat reste le même...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 novembre 2011 à 21:49:15

                      En fait, les méthodes s'appellent mute() et unmute() aussi. A appelé directement sur soundManager.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 novembre 2011 à 22:09:48

                        Citation : Golmote

                        A appelé directement sur soundManager



                        C'est à dire? :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 novembre 2011 à 22:23:21

                          soundManager.mute(), d'après la doc.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            27 novembre 2011 à 22:38:39

                            Sors-toi un peu les doigts du cul et lis la doc ;) tu as toutes les qualités pour t'en sortir sans qu'on te prenne par la main.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 novembre 2011 à 18:18:19

                              Effectivement, sa marche beaucoup mieux !
                              Geoffrey-Zéro, t'as pas complétement tort lol (surtout pour la partie qui traite de mes qualités !)
                              Je consulterais la doc avant de venir demander dorénavant.
                              Merci pour l'aide apporté ! ;)
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Mouvement sourie

                              × 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