Une souris suivie comme son ombre ...
2ème
Voilà bien la suite presque logique
d'un premier évènement dans la plus pure tradition
du gadget !
Alors, après autres recherches et autres
cogitations intenses, nouvelles insomnies provoquées par
le titillement régulier du "il y a quelque chose qui
manque ...", je vous livre ce nouvel exemple d'inutilité
sur le Web ... !
Mais il faut rendre au Web ce qui appartient au Web
: ce script est en quelque sorte une compilation
d'évènements et de bouts d'écriture que j'ai
glané ici et là sur la grande toile : je ne puis
donc en revendiquer la paternité complète. Je me
suis borné à le mettre en page de façon
cohérente en adaptant au fur et à mesure les
différentes variables pour que les fonctions mises en
oeuvre produisent l'effet recherché.
Je dois confesser autre chose ... : je l'utilise
sur une page de mon site, quand bien même il s'agit d'un
gadget. Cherchez-la : elle est quelque peu différente de
celle-ci !
...
Bon, abrégeons : pas besoin d'un grand
discours : vous voyez le résultat en promenant votre
souris sur la page !
Je ne ferai pas davantage d'analyse complète
du script que pour l'autre souris : vous y seriez aussi pour un
bon moment ... et sans doute bien davantage.
Alors, je répète ... retenez votre
souffle :
SCRIPT LANGUAGE="JavaScript"><!--
var nomIMa = "boutons/oisga2.gif";
var nomIMb = "boutons/oisdr2.gif";
var heightIM = 54;
var widthIM = 110;
NS4 = (document.layers) ? 1 : 0;
IE4 = (document.all) ? 1 : 0;
VERSION4 = (NS4|IE4) ? 1 : 0;
var objIM = new Array();
var numObjIM = 2;
var ptrIM = 0;
var xborneIM = 91;
var yborneIM = 39;
var xaqIM = xborneIM;
var yaqIM = yborneIM;
var xxaqIM = xborneIM;
var yyaqIM = yborneIM;
var zIM = 0;
function BougeObjIM () {
if (zIM == 0) {
(this.d) ? this.x+=2 : this.x-=2;
if (this.x >= xborneIM) {
this.x = xborneIM;
this.changedir();
}
if (this.x <= -xborneIM) {
this.x = -xborneIM;
this.changedir();
}
if (Math.round(Math.random()*(this.s+1)*60) == 1) this.changedir
();
}
var t = Math.round(Math.random()*(this.s+1)*10);
if (t==2 && this.y < yborneIM)
this.y++;
if (t==1 && this.y > -yborneIM) this.y--;
if (NS4) {
this.layer.left = this.x+xaqIM;
this.layer.top = this.y+yaqIM;
} else {
this.layer.style.pixelLeft = this.x+xaqIM;
this.layer.style.pixelTop = this.y+yaqIM;
}
}
function ChangedirObjIM () {
if (this.d == 0) {
this.d = 1;
this.img.src = nomIMb;
}
else {
this.d = 0;
this.img.src = nomIMa;
}
}
function DefObjIM(ID) {
if (NS4) {
this.layer = new Layer (0);
this.layer.visibility = "visible";
this.layer.document.write('<img name=\"imgIM'+ID+'\"
src=\"'+nomIMa+'\" height=\"'+heightIM+'\" width=\"'+widthIM+'\"
border=\"0\">');
this.layer.document.close();
eval ('this.img =
this.layer.document.images[\'imgIM'+ID+'\']');
} else {
eval ('this.layer = document.all.IM'+ID);
eval ('this.img = document.images[\'imgIM'+ID+'\']');
}
this.d = Math.round(Math.random());
this.s = Math.round(Math.random());
this.x = Math.round(Math.random()*2*xborneIM) - xborneIM;
this.y = Math.round(Math.random()*2*yborneIM) - yborneIM;
this.img.src = (this.d ==0) ? nomIMa : nomIMb;
this.anim = BougeObjIM;
this.changedir = ChangedirObjIM;
}
function BougeIM() {
var dx = xxaqIM-xaqIM;
if (Math.abs(dx) > 2) {
var ix = Math.round(dx/10);
if (Math.abs(ix) < 2 ) ix = dx > 0 ? 2 : -2;
xaqIM += ix;
zIM = 1;
}
else {
xaqIM = xxaqIM;
zIM = 0;
}
if (yyaqIM != yaqIM) yaqIM += Math.round((yyaqIM-yaqIM)/10);
for(var x=0; x < numObjIM; x++) {
if (dx != 0) {
if (dx < 0 && objIM[x].d == 1)
objIM[x].changedir();
if (dx > 0 && objIM[x].d == 0)
objIM[x].changedir();
}
objIM[x].anim();
}
}
function SourisEvIM(e) {
if (NS4) {
xxaqIM = e.pageX ;
yyaqIM = e.pageY ;
} else {
xxaqIM = event.clientX + document.body.scrollLeft ;
yyaqIM = event.clientY + document.body.scrollTop ;
}
}
function InitIM() {
if (VERSION4) {
for(var x=0; x<numObjIM; x++) objIM[x] = new DefObjIM(x)
;
if (NS4) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = SourisEvIM;
setInterval("BougeIM();",50);
}
}
if (VERSION4 && ! NS4) {
for (var x=0; x<numObjIM; x++) {
document.write('<div id="IM'+x+'" style="position: absolute;
visibility: visible;">');
document.write('<img name="imgIM'+x+'" src="'+nomIMa+'"
height="'+heightIM+'" width="'+widthIM+'"
border="0"></div>');
document.write('</div>');
}
}
if (window.onload) {
if (window.RegExp) {
var regstr = '^[^\\{]*\\{((.|\\t|\\n|\\r)*)}[^\\}]*$';
window.onload.toString().match(regstr);
window.onload = new Function (RegExp.$1+"; InitIM ();");
}
}
else window.onload = InitIM;
// --></SCRIPT>
|
Eh oui ! Il est encore plus "costaud" que l'autre !
Forcément : il comporte un plus grand nombre de variables
de calcul, du moins pour ce qui est du mouvement.
Vous installerez la totalité du script dans
les balises <HEAD> : ici aussi, sur une page vide, vous
obtiendrez le résultat ... à condition, aussi, de
ne rien avoir oublié !
Vous devez au moins savoir le minimum pour le
mettre en oeuvre avec vos images :
en rouge, l'adresse de chacune des images : il
y a en deux ... elles ne se retournent pas seules,
évidemment !
en bleu,
les dimensions de ces images : respectez-les comme sur une page
normale.
n'utilisez pas des images trop gourmandes en
octets : évitez de saturer le PC du visiteur !
Il vous reste donc à réaliser 2
images animées de votre crû grâce à
votre logiciel de dessin et d'animation.
Vous avez la possibilité de
modifier certains paramètres, dans des limites
raisonnables !
Je ne vous dirai pas comment ... ;o) : à vous d'essayer d'y
comprendre quelque chose ...
Sachez toutefois que vous pouvez modifier vitesse,
espacements maximum et nombre d'images mises en oeuvre.
Creusez-vous un peu la cervelle ! Et amusez-vous
bien ...
Comme il s'agit également d'un script
faisant appel aux calques, cet évènement a le
même avantage de pouvoir "planer" sur tous les objets de la
page, y compris photos et images animées.
