Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de demarage/stopage d'une fonction

    29 janvier 2009 à 15:34:35

    Bonjour a tous!!

    je suis actuellement entrain d'essaye de bosser sur un script trouver quelque part, bien sur comenté, mais que je galere pour modifier, vu que mon niveau en javascript est bas pour ne pas dire minable...

    Le principe du script, c'ets de faire tourner des lien en boucle autour d'n centre, que j'ai volontairement placer hors de la page, pour faire un menu d'icones defilentes en quars de cercle...

    j'ai volontairement dupliquer avc du php le code qui fait aparaitre les icone, pour qu'il n'en manque pas et avoir un resulta convaiquant.

    Mais voila, la fonction se lance au chargeemnt de la page ( fairetourner(); dans body ), t j'aimerait qu'elle se lance au passage de la sourie sur un bouton...

    Rien de dificile la dedans, mais en fait, le probleme c'ets que quand e sourie n'ets pas sur le bouton, les icones ne restes pas a leur place, et retourne dans le coin de la page.
    Je n'ai pas coder les bouton, je reflechisait jsute sur ce que sa alait donner, et enlevant le fairetourner(); dans le body...


    Voila ma fonction : http://geekdechaine.olympe-network.com

    Voila mon code html/php:
    <html>
    <head>
    	<meta name="author" content="Webreview">
    	<meta name="Author" content="McBenny">
    	<meta name="Copyright" content="©Biblioscript.com, 2002">
    	<title>TousMesMails.com</title>
    	<script src="/js/nav_ronde2.js"></script>
    	<script src="/js/zoom.js"></script>
    </head>
    
    <body OnLoad="fairetourner();" >
    <?php
    $numeroicone=1;
    while($numeroicone <= 28)
    {
    ?><div id="icone<?php echo $numeroicone; ?>" style="position: absolute;">
    <a href="#"><img src="/images/icones/icones_mails_recut.png" width="32" height="32" border="0" onMouseOver="JSFX.zoomIn(this,10,20)" onMouseOut="JSFX.zoomOut(this)"></a>
    </div>
    <?php $numeroicone ++ ; ?>
    <div id="icone<?php echo $numeroicone; ?>" style="position: absolute;">
    <a href="#"><img src="/images/icones/icones_mails_envoye.png" width="32" height="32" border="0" onMouseOver="JSFX.zoomIn(this,10,20)" onMouseOut="JSFX.zoomOut(this)"></a>
    </div>
    <?php $numeroicone ++ ; ?>
    <div id="icone<?php echo $numeroicone; ?>" style="position: absolute;">
    <a href="#"><img src="/images/icones/icones_poubelle_pleine.png" width="32" height="32" border="0" onMouseOver="JSFX.zoomIn(this,10,20)" onMouseOut="JSFX.zoomOut(this)"></a>
    </div><!-- metre un script pour affcher la poubelle vide si il n'y a aps de mail dans la boite -->
    <?php $numeroicone ++ ; ?>
    <div id="icone<?php echo $numeroicone; ?>" style="position: absolute;">
    <a href=#"><img src="/images/icones/icones_ecrire.png" width="32" height="32" border="0" onMouseOver="JSFX.zoomIn(this,10,20)" onMouseOut="JSFX.zoomOut(this)"></a>
    </div>
    <?php $numeroicone ++ ; ?>
    <div id="icone<?php echo $numeroicone; ?>" style="position: absolute;">
    <a href="#"><img src="/images/icones/icones_contacts.png" width="32" height="32" border="0" onMouseOver="JSFX.zoomIn(this,10,20)" onMouseOut="JSFX.zoomOut(this)"></a>
    </div>
    <?php $numeroicone ++ ; ?>
    <div id="icone<?php echo $numeroicone; ?>" style="position: absolute;">
    <a href="#"><img src="/images/icones/icones_parametre.png" width="32" height="32" border="0" onMouseOver="JSFX.zoomIn(this,10,20)" onMouseOut="JSFX.zoomOut(this)"></a>
    </div>
    <?php $numeroicone ++ ; ?>
    <div id="icone<?php echo $numeroicone; ?>" style="position: absolute;">
    <a href="#"><img src="/images/icones/icones_config_boites.png" width="32" height="32" border="0" onMouseOver="JSFX.zoomIn(this,10,20)" onMouseOut="JSFX.zoomOut(this)"></a>
    </div>
    <?php $numeroicone ++ ; ?>
    
    <?php
    } // fin du while 
    ?>
    
    
    </body>
    </html>
    



    Voici maintemant le fichier nav_ronde2.js :

    // Detection du navigateur
    
    nc6 = (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined')? true:false;
    
    nc4 = (document.layers)? true:false;
    
    ie4 = (document.all)? true:false;
    
    
    
    // Variables concernant le cercle 'virtuel'
    
    // Valeur de decallage entre chaque position (pas grand chose ;-)
    
    var decallage = Math.PI / 180;
    
    
    
    // Le rayon du cercle
    
    var r = 270;
    
    
    //le sens de rotation, metre var sens = intrigo; pour que sa tourne dans l'autre sens
    var sens = 'trigo' ;
    
    
    // Placement du centre du cercle
    
    var centre_x = -78;
    
    var centre_y = -78;
    
    
    
    
    
    // Noms des div comportant les elements a faire tourner
    
    var calques = new Array('icone1','icone2','icone3','icone4','icone5','icone6','icone7','icone8','icone9','icone10','icone11','icone12','icone13','icone14','icone15','icone16','icone17','icone18','icone19','icone20','icone21','icone22','icone23','icone24','icone25','icone26','icone27','icone28');
    
    // Variables qui accueilleront les 'index' de position des calques portant les elements a faire tourner
    
    var pos = new Array();
    
    
    
    // Fonction de positionnement initial des elements autour du cercle 'virtuel'
    
    function fairetourner() {
    
    	pos[0] = 0;
    
    
    
    // Pour chaque element...
    
    	for ( i = 1; i < calques.length; i++ ) {
    
    
    
    // Calcul d'un lot de valeurs que je ne saurais expliquer... (www.webreview.com)
    
    		pos[i] = parseFloat(pos[i - 1] + ((2 * Math.PI) / calques.length));
    
    		}
    
    
    
    // Lancement du premier mouvement de rotation
    
    	ronde();
    
    	}
    
    
    
    // Fonction d'animation des elements autour du cercle 'virtuel'
    
    function ronde() {
    
    
    
    // Pour chaque calque portant un element
    
    	for ( i = 0; i < pos.length; i++ ) {
    
    
    
    // Modification de la position pour creer l'apparence de mouvement
    
    // Pour inverser le mouvement, remplacer += par -=
    
    		if ( sens == 'trigo' ) { 
    		pos[i] -= decallage; 
    		}
    		if ( sens == 'intrigo' ) {
    		pos[i] += decallage;
    		}
    
    
    
    // Instructions pour Netscape 4.x
    
    		if (nc4) {
    
    
    
    // Le calque est rendu visible
    
    			eval("document." + calques[i]).visibility = "visible";
    
    
    
    // On place le calque en abcisse au cosinus de l'index de position
    
    			eval("document." + calques[i]).left = (r * Math.cos(pos[i])) + centre_x;
    
    
    
    // On place le calque en ordonnee au sinus de l'index de position
    
    			eval("document." + calques[i]).top = (r * Math.sin(pos[i])) + centre_y;
    
    			}
    
    
    
    // Instructions equivalentes pour Internet Explorer
    
    		if (ie4) {
    
    			eval(calques[i] + ".style").visibility = "visible";
    
    			eval(calques[i] + ".style").left = (r * Math.cos(pos[i])) + centre_x;
    
    			eval(calques[i] + ".style").top = (r * Math.sin(pos[i])) + centre_y;
    
    			}
    
    
    
    // Instructions equivalentes pour Netscape 6.x
    
    		if (nc6) {
    
    			eval("document.getElementById('" + calques[i] + "').style").visibility = "visible";
    
    			eval("document.getElementById('" + calques[i] + "').style").left = (r * Math.cos(pos[i])) + centre_x;
    
    			eval("document.getElementById('" + calques[i] + "').style").top = (r * Math.sin(pos[i])) + centre_y;
    
    			}
    
    		}
    
    
    
    // On relance la fonction pour que les deplacements s'enchainent et creeent l'animation
    
    	setTimeout("ronde()",75);
    
    	}
    


    Le fichier zoom.js, c'ets jsute celui qui fait grossir les icones au passage de la sourie...


    Alor voila, coment pourait-je faire pour que quand la fonction s'arette ( sur un evenement ou un autre ) et ben les icones restent a leure place et ne retourne pas a leur positition absolute qu'ils ont par default...

    Coment pourait-je faire?

    Merci d'avence!
    • Partager sur Facebook
    • Partager sur Twitter
      29 janvier 2009 à 15:40:12

      Salut :p Ben moi je suis désolé mais j'en ai aucune idée :(
      • Partager sur Facebook
      • Partager sur Twitter
        29 janvier 2009 à 16:42:36

        Crazy, c'etait pas la peine...

        non, c'est jsute un mec avec que je code :D n'y faite pas attention^^
        • Partager sur Facebook
        • Partager sur Twitter
          1 février 2009 à 23:08:19

          Vraiment persone pour m'aider?
          • Partager sur Facebook
          • Partager sur Twitter
            2 février 2009 à 17:47:47

            Mets le HTML généré plutôt que le PHP. C'est plus facile pour tester.
            • Partager sur Facebook
            • Partager sur Twitter
              2 février 2009 à 22:07:12

              ça tourne pas du tout...
              • Partager sur Facebook
              • Partager sur Twitter
                3 février 2009 à 12:32:25

                Je comprends pas bien le problème... Ca tourne nickel...

                Tu voulais le faire tourner lors du passage de la souris sur l'un des icônes du menu ??? (Je vois pas trop l'intérêt...)
                • Partager sur Facebook
                • Partager sur Twitter
                  3 février 2009 à 12:36:06

                  ah j'ai capté... ça marche pas sous chrome...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 février 2009 à 13:13:43

                    Etrange ça... J'ai jamais testé la compatibilité de différents scripts sous Chrome... J'avoue que je ne sais pas du tout comment il gère le JS...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 février 2009 à 17:34:23

                      Non, je voudrait faire tourner l'ors du passage de la sourie sur un bouton a part , independant ;D
                      ( jsute un onmauseover sur nimporte quoi en fait )
                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 février 2009 à 17:39:25

                        onmauseover

                        onmouseover

                        ... déjà ne pas avoir une orthographe correcte c'est moyen... si en plus tu écris mal les noms des fonctions/attributs/variables etc., on n'es pas arrivé...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 février 2009 à 18:37:37

                          c'est juste que je suis entrain de reviser un contrôle d'allemand, desolé ... ( pour les incultes indelébiles , maus c'est la sourie en allemand )
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 février 2009 à 21:22:50

                            pour les incultes indelébiles:
                            sourie est le verbe sourire conjugué au présent à la première personne du singulier.

                            la souris est un animal...


                            stopage

                            arrêt


                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 février 2009 à 8:12:41

                              Bon, Ok j'ai pas d'orthoraphe, et mon humour est lour, mais esqu'on pourait pluto parler de mon probleme de js que de on probleme social ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 février 2009 à 13:09:11

                                Je ne sais pas si c'est possible... mais si tu mets le setTimeout() (dans la fonction ronde()) dans une variable :
                                timer = setTimeout(ronde,75);
                                


                                Tu pourrais peut-être l'arrêter avec :
                                clearTimeour(timer);
                                


                                (Je sais que ça fonctionne sur les setInterval, mais j'ai jamais essayé sur les setTimeout...)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  4 février 2009 à 13:16:21

                                  oui ça devrait marcher...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    5 février 2009 à 23:11:34

                                    hum...

                                    Je vai essayer sa :D

                                    Je vous dit
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      11 mars 2009 à 21:04:20

                                      Si tu écris onMauseOver, ne cherche pas à t'excuser en disant que Maus c'est la souris en allemand car dans ce cas tu aurais écris onMausOver ;)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        11 mars 2009 à 21:38:16

                                        crazy, c'était vraiment la peine de remonter ce topic pour dire ça ? o_O
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          10 juin 2009 à 21:28:47

                                          :lol:

                                          C'est une blague hein ? :lol:
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Probleme de demarage/stopage d'une fonction

                                          × 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