EFFET GUIRLANDE (IMAGE QUI SUIT LA SOURIS,

Scooby1 Messages postés 48 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 26 novembre 2003 - 26 oct. 2002 à 00:47
badak9 Messages postés 2 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 26 décembre 2006 - 26 déc. 2006 à 08:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/15937-effet-guirlande-image-qui-suit-la-souris

badak9 Messages postés 2 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 26 décembre 2006
26 déc. 2006 à 08:22
Oui oui merci :-) ca j'ai bien vu que l'url n'était pas valide mais je n'avais pas de joli image de flocon sous la main :-)
J'ai donc utilisé une image de mon logo à la place, ce qui vas aussi bien finalement.

bonnes fêtes
cs_8Tnerolf8 Messages postés 30 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 17 novembre 2009
25 déc. 2006 à 12:06
Joyeux Noël tout le monde

Pour répondre à MyPollux54, oui, il est possible d'intégrer ce script dans du PHP. Il suffit de l'insérer dans un echo et d'échapper soit les guillemets, soit les apostrophes du script.

Quant à Badak9, je suis désolé, mais mon successeur a apparement supprimé le site noel.mjcmermoz.asso.fr. Du coup, les url pointant vers les flocons ne fonctionnent plus tu as à la place une croix rouge. Qu'à cela ne tienne, il te suffit de remplacer les src dans le script par une url valide, et tu pourras voir une guirlande correcte.
badak9 Messages postés 2 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 26 décembre 2006
24 déc. 2006 à 15:16
ou est l'image du flocon?
MyPollux54 Messages postés 1 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 16 décembre 2005
16 déc. 2005 à 23:37
Serait-il possible de transformer ce code pour que l'on puisse l'intégrer à une page en php????
cs_8Tnerolf8 Messages postés 30 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 17 novembre 2009
25 nov. 2005 à 18:00
Bon, ben en utilisant le code ci-dessus, je me suis aperçu que ça ne fonctionnait pas sous moteur Mozilla.

Voici donc ce script débuggé pour que cela marche aussi avec Netscape ou Firefox.

Pour voir un bel exemple de ce dernier, rendez-vous sur noel.mjcmermoz.asso.fr.

-------------------------------------------------------------------------------------------------

<HEAD>

<script language="JavaScript">
// Nombre d'images dans la guirlande
var nDots = 7;
// Position horizontale de départ de la guirlande
var Xpos = 137;
// Position verticale de départ de la guirlande
var Ypos = 39;
var DELTAT = .01;
var SEGLEN = 10;
var SPRINGK = 10;
var MASS = 0.8;
var GRAVITY = 50;
var RESISTANCE = 10;
var STOPVEL = 0.1;
var STOPACC = 0.1;
var DOTSIZE = 10;
var BOUNCE = 0.75;
var isNetscape = navigator.appName=="Netscape";
var followmouse = true;
var elements = new Array();
// fonction principale d'affichage de la guirlande
function init() {
var i = 0;
for (i = 0; i < nDots; i++) {
elements[i] = new element(i);
}

for (i = 0; i < nDots; i++) {
document.getElementById("element"+i).style.left = elements[i].X;
document.getElementById("element"+i).style.top = elements[i].Y;
}
setTimeout("startanimate()", 1000);

}
function element(i) {
this.X = Xpos;
this.Y = Ypos;
this.dx = 0;
this.dy = 0;
}

function startanimate() {
setInterval("animate()", 20);
}

function setInitPositions(elements) {
var startloc = document.all.tags("LI");
var i = 0;
for (i = 0; i < startloc.length && i < (nDots - 1); i++) {
elements[i+1].X = startloc[i].offsetLeft
startloc[i].offsetParent.offsetLeft - DOTSIZE;
elements[i+1].Y = startloc[i].offsetTop +
startloc[i].offsetParent.offsetTop + 2*DOTSIZE;
}
elements[0].X = elements[1].X;
elements[0].Y = elements[1].Y - SEGLEN;
}

function MoveHandler(e) {
Xpos = e.pageX;
Ypos = e.pageY;
return true;
}
function MoveHandlerIE() {
Xpos = window.event.x + document.body.scrollLeft;
Ypos = window.event.y + document.body.scrollTop;
}
if (isNetscape) {
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = MoveHandler;
} else {
document.onmousemove = MoveHandlerIE;
}
function vec(X, Y)
{
this.X = X;
this.Y = Y;
}
function springForce(i, j, spring)
{
var dx = (elements[i].X - elements[j].X);
var dy = (elements[i].Y - elements[j].Y);
var len = Math.sqrt(dx*dx + dy*dy);
if (len > SEGLEN) {
var springF = SPRINGK * (len - SEGLEN);
spring.X += (dx / len) * springF;
spring.Y += (dy / len) * springF;
}
}
function animate() {
var start = 0;
if (followmouse) {
elements[0].X = Xpos;
elements[0].Y = Ypos;
start = 1;
}
for (i = start ; i < nDots; i++ ) {
var spring = new vec(0, 0);
if (i > 0) {
springForce(i-1, i, spring);
}
if (i < (nDots - 1)) {
springForce(i+1, i, spring);
}
var resist = new vec(-elements[i].dx * RESISTANCE, -elements[i].dy * RESISTANCE);
var accel = new vec((spring.X + resist.X)/ MASS, (spring.Y + resist.Y)/ MASS + GRAVITY);
elements[i].dx += (DELTAT * accel.X);
elements[i].dy += (DELTAT * accel.Y);
if (Math.abs(elements[i].dx) < STOPVEL &&
Math.abs(elements[i].dy) < STOPVEL &&
Math.abs(accel.X) < STOPACC &&
Math.abs(accel.Y) < STOPACC) {
elements[i].dx = 0;
elements[i].dy = 0;
}
elements[i].X += elements[i].dx;
elements[i].Y += elements[i].dy;
var height, width;
if (isNetscape)
{
height = window.innerHeight + document.scrollTop;
width = window.innerWidth + document.scrollLeft;
} else {
height = document.body.clientHeight + document.body.scrollTop;
width = document.body.clientWidth + document.body.scrollLeft;
}
if (elements[i].Y >= height - DOTSIZE - 1) {
if (elements[i].dy > 0) {
elements[i].dy = BOUNCE * -elements[i].dy;
}
elements[i].Y = height - DOTSIZE - 1;
}
if (elements[i].X >= width - DOTSIZE) {
if (elements[i].dx > 0) {
elements[i].dx = BOUNCE * -elements[i].dx;
}
elements[i].X = width - DOTSIZE - 1;
}
if (elements[i].X < 0) {
if (elements[i].dx < 0) {
elements[i].dx = BOUNCE * -elements[i].dx;
}
elements[i].X = 0;
}
document.getElementById("element"+i).style.left = elements[i].X;
document.getElementById("element"+i).style.top = elements[i].Y;
}
}

</script>
</head>











































<script language="JavaScript">
// Lancement de la procédure d'affichage de la guirlande
init();
</script>
Scooby1 Messages postés 48 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 26 novembre 2003
26 oct. 2002 à 00:47
Pas mal !
Rejoignez-nous