Soyez le premier à donner votre avis sur cette source.
Vue 5 282 fois - Téléchargée 556 fois
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Images dansantes: mouvement aléatoire orienté</title> <script type="text/javascript"> //<![CDATA[ var iZon=0,nZon=0,tim=5; // timer en milisecondes var vit=9,vit2=2*vit+1; // vitesse maximale en pixels à chaque Nxt() var pas=3,pas2=2*pas+1; // différence maximal de la vitesse à chaque Nxt() var wIma=200,hIma=150; // dimensions des photos en pixels var xInf,yInf,xSup,ySup; // valeurs limites var zon=[ // initialement, aucune image ne doit dépasser les bords new Zon(000,000,"Image-0"), // x,y relatifs au conteneur new Zon(100,250,"Image-1"), new Zon(300,450,"Image-2"), new Zon(400,250,"Image-3"), new Zon(300,350,"Image-4"), new Zon(312,450,"Image-5"), new Zon(600,450,"Image-6") ]; var num=nZon-1; // numéro avec avec plus grand z-index function Zon(x,y,nom) { // Définition de l'objet et comptage this.x=x; this.y=y; this.nom=nom; this.u=0; this.v=0; nZon++; } function Clk(i) { // Action du click le i-eme image var ii=document.getElementById('i'+i); document.getElementById('i'+num).style.zIndex=ii.style.zIndex; ii.style.zIndex=nZon-1; num=i; // met ii au premier plan alert(i+": "+zon[i].nom+" --> Remplacez Clk(i) par votre propre 'action'"); } function Ini() { // initialise var s="",c=document.getElementById('cnt'); xInf=c.offsetLeft; xSup=xInf+c.clientWidth-wIma; yInf=c.offsetTop; ySup=yInf+c.clientHeight-hIma; for (var i=0;i<nZon;i++) { // Inscrit les zones dans le conteneur var z=zon[i]; s+="<img id='i"+i+"' src='Img/"+z.nom+".jpg' title='"+z.nom +"' onclick='Clk("+i+")' style='position:absolute; z-index:" +i+"; left:"+(z.x+=xInf)+"px; top:"+(z.y+=yInf)+"px'/>"; } c.innerHTML=s; } function Nxt() { var im=document.getElementById('i'+iZon),z=zon[iZon]; var u=z.u+Math.floor(Math.random()*pas2)-pas; var v=z.v+Math.floor(Math.random()*pas2)-pas; if (u<-vit) u=-vit; else if (u>vit) u=vit; if (v<-vit) v=-vit; else if (v>vit) v=vit; var x=z.x+u,y=z.y+v; if ((x<xInf)||(x>xSup)) z.u=-u; else if ((y<yInf)||(y>ySup)) z.v=-v; else { im.style.left=x+'px'; im.style.top=y+'px'; z.x=x; z.y=y; z.u=u; z.v=v; } iZon=(iZon+1)%nZon; } //]]> </script> </head> <body onload="Ini(); setInterval('Nxt()',tim);"> <h2>Images dansantes: mouvement aléatoire orienté.</h2> <div id='cnt' style="margin-left:10px; width:800px; height:600px; background:yellow"> <!-- conteneur des images dansantes. Adaptez-en la dimension width et height --> </div> <!-- le reste du code de body n'est pas indispensable --> <p style='font-size:12px;'> Cliquez sur une image: elle vient au premier plan et vous êtes invités à écrire votre propre 'Clk(i)'.<br /> Toutes les images ont la même dimension [wIma,hIma].<br /> Initialement, les images ne doivent pas dépasser les bords du conteneur jaune.<br /> La vitesse dépend des variables 'pas', 'vit' et 'tim', mais aussi du navigateur et de votre ordinateur.<br /> </p> <p style='font-size:12px; color:red;'>Testé avec les navigateurs: 'Internet Explorer 8 et 9', 'Firefox 4.0.1', 'Navigator 9.0.0.6', 'Google Chrome 11.0.696.71', 'Opera 11.11', 'Safari 5'.<br /> (En execution locale, j'ai rencontré des difficultés de positionnement avec Internet Explorer 8, sous Windows 7 - 64 bits) </p> <p style='font-size:12px; color:green;'> Essayez d'autes algorithmes d'images dansantes: <a href='http://www.william-voirol.ch/TP/Images dansantes/1-Aleatoire-libre'> 1-Aleatoire-libre </a> <a href= 'http://www.william-voirol.ch/TP/Images dansantes/2-Aleatoire-sans superpositions'> 2-Aleatoire-sans superpositions </a> <a href='http://www.william-voirol.ch/TP/Images dansantes/3-Aleatoire-oriente'> 3-Aleatoire-orienté</a> <a href='http://www.william-voirol.ch/TP/Images dansantes/4-Tortue'> 4-Tortue</a><br /> Téléchargez le zip complet (avec sources et images): <a href='http://www.william-voirol.ch/TP/Images dansantes.zip'> Images dansantes.zip</a><br /> Les images de temples de l'Inde proviennent de mon site: <a href='http://www.william-voirol.ch'>Splendeurs de l'Inde</a> </p> </body> </html>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.