JeuWeb - Crée ton jeu par navigateur
[jQuery] Faire "tourner" une div - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [jQuery] Faire "tourner" une div (/showthread.php?tid=4272)



[jQuery] Faire "tourner" une div - phenix - 10-08-2009

Bonjour à tous,

J'ai depuis un bon moment une idée qui me trotte dans la tête. Sa m'obsède presque...
Je voudrais faire "tourné" une div, dans le sens ou cette fameuse div décrirais un cercle sur l'écran.
J'ai donc été trouver un ami matheux pour qu'il lâche les formules magique. Ensuite, je me suis lancer dans les codes. Sauf que bien sur se coince.

J'ai écrit ce code ci:


(function($) {
$.turnDiv = {
//Variable de base:

//Centre de l'écran
centreTop: screen.height/2,
centreLeft: screen.width/2,

//Variable U
u: 3,

//Calcule de la nouvelle position
newPos: function(Rayon) {
var newTop = centreTop + (Rayon*Math.cos(u));
var newLeft = centreLeft + (Rayon*Math.sin(u));

$(this).css({top: (newTop)+"px", left: (newLeft)+"px"});
},

//Rotation toute les Xmiliseconde
rotate: function (Rayon, speed) {
setInterval("$.turnDiv.newPos("+Rayon+");", speed);
}
}
//Accès rapide
rotateDiv = function(Rayon, speed) {
$.turnDiv.rotate(Rayon, speed);
}
});

Ensuite j'ai fais:


<script type="text/javascript">
$(document).ready(

function ()

{
$("div.rot").rotateDiv(30,500);
}
);
</script>
<style>
.rot
{
position: absolute;
left: 670px;
top: 440px;
}
</style>
</head>
<body>
<div class="rot">*</div>
</body>

Et il me sort l'erreur:

Erreur : $("div.rot").rotateDiv is not a function
Fichier Source : http://localhost/www/phenix_factory/turnDiv/
Ligne : 15

J'ai du mal a comprend, j'ai du oublier quelques chose, mais je ne vois pas quoi Confused

Merci d'avance de votre aide.


RE: [jQuery] Faire "tourné" une div - SorenS - 10-08-2009

Code PHP :
<?php 
//Rotation toute les Xmiliseconde
rotate: function (Rayon, speed) {
setInterval("$.turnDiv.newPos("+Rayon+");", speed);
}
}
//Accès rapide
rotateDiv = function(Rayon, speed) {
$.
turnDiv.rotate(Rayon, speed);

>Tu mets :
rotate: function (Rayon, speed)
et
rotateDiv = function(Rayon, speed) {

Une fois =, une fois :, l'erreur viendrait de là ? (ps je n'utilise pas du tout jquery)


RE: [jQuery] Faire "tourné" une div - phenix - 10-08-2009

Non, je viens de tester, j'ai une syntaxe error Smile.

Il manque quelques chose mais je trouve pas quoi Confused


RE: [jQuery] Faire "tourné" une div - Anthor - 10-08-2009

Comment appeler une fonction privée, sans appeler son objet ? Smile


RE: [jQuery] Faire "tourné" une div - phenix - 10-08-2009

Citation :Comment appeler une fonction privée, sans appeler son objet ?

Heu ? :heuuu:
En terme claire sa donne ? J'apprends jQuery sur le tas, donc j'ai pas vraiment de notion théorique... J'ai chercher sur google, mais je sais pas quoi chercher :heuuu:


RE: [jQuery] Faire "tourné" une div - Anthor - 10-08-2009

Autant pour moi, j'avais mal lu
Code PHP :
<?php 
<script type="text/javascript">
(function($) {
$.
turnDiv = {
//Variable de base:

//Centre de l'écran
centreTop : screen.height/2,
centreLeft : screen.width/2,

//Variable U
u: 3,

//Calcule de la nouvelle position
newPos: function(Rayon) {
var
newTop = $.turnDiv.centreTop + (Rayon*Math.cos($.turnDiv.u));
var
newLeft = $.turnDiv.centreLeft + (Rayon*Math.sin($.turnDiv.u));

$(
this).css({top: (newTop)+"px", left: (newLeft)+"px"});
},

//Rotation toute les Xmiliseconde
rotate: function (Rayon, speed) {
setInterval(function(){
$.
turnDiv.newPos(Rayon);
},
speed);
}
}
//Accès rapide
$.fn.rotateDiv = function(Rayon, speed) {
$.
turnDiv.rotate(Rayon, speed);
}
})(
jQuery);

$(
document).ready(function (){
$(
"div.rot").rotateDiv(30,500);
});
</
script>

Par contre tes positions sont toujours les mêmes puisque tu ne changes aucune valeur dans le temps.


RE: [jQuery] Faire "tourné" une div - phenix - 10-08-2009

Merci, ton code fonctionne, j'avais complètement zappé qu'il fallais remettre a chaque fois $.turnDiv...

Par contre:

- Il y a un problème dans la formule mathématique...


Citation :Par contre tes positions sont toujours les mêmes puisque tu ne changes aucune valeur dans le temps.

Oui, je remarque aussi, pourtant tout les Demi-seconde elle devrait changer, même si la formule est buggée :heuuu:


RE: [jQuery] Faire "tourné" une div - Anthor - 11-08-2009

Je ne vois pas comment elle pourrait changer puisque tes variables sont constantes Wink

Peut-être que je te ferais ça ce soir ou dans la journée, suivant mon planning.