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.
