Free Web Hosting by Netfirms
Web Hosting by Netfirms | Free Domain Names by Netfirms

 

 

B"H

 

 

Java Scripts

 
Sección "Java Scripts"

Lección 11

Hacer que imágenes sigan al cursor realizando el efecto "elástico"

Para lograr este magnífico efecto, solo debes pegar este Script debajo de donde dice <Body> en el HTML de tu página:

<div id="dot0" style="position: absolute; visibility: hidden; height: 11; width: 11;">
<dd><img src="s.bullet.gif" width="11" height="11"></dd>
</div><div id="dot1" style="position: absolute; height: 11; width: 11;">
<dd><img src="s.bullet.gif" width="11" height="11"></dd>
</div><div id="dot2" style="position: absolute; height: 11; width: 11;">
<dd><img src="s.bullet.gif" width="11" height="11"></dd>
</div><div id="dot3" style="position: absolute; height: 11; width: 11;">
<dd><img src="s.bullet.gif" width="11" height="11"></dd>
</div><div id="dot4" style="position: absolute; height: 11; width: 11;">
<dd><img src="s.bullet.gif" width="11" height="11"></dd>
</div><div id="dot5" style="position: absolute; height: 11; width: 11;">
<dd><img src="s.bullet.gif" width="11" height="11"></dd>
</div><div id="dot6" style="position: absolute; height: 2; width: 47; left: 11; top: -1">
<dd>&nbsp;</dd>
</div><script LANGUAGE="JavaScript">
<!-- 
var nDots = 7;
if (document.all&&window.print)
document.body.style.cssText="overflow-x:hidden;overflow-y:scroll"
var Xpos = 0;
var Ypos = 0;
var DELTAT = .01;
var SEGLEN = 10;
var SPRINGK = 10;
var MASS = 1;
var GRAVITY = 50;
var RESISTANCE = 10;
var STOPVEL = 0.1;
var STOPACC = 0.1;
var DOTSIZE = 11;
var BOUNCE = 0.75;
var isNetscape = navigator.appName=="Netscape";
var followmouse = true;
var dots = new Array();
init();
function init()
{
var i = 0;
for (i = 0; i < nDots; i++) {
dots[i] = new dot(i);
}
if (!isNetscape) {
}
for (i = 0; i < nDots; i++) {
dots[i].obj.left = dots[i].X;
dots[i].obj.top = dots[i].Y;
}
if (isNetscape) {
startanimate();
} else {
setTimeout("startanimate()", 2000);
}
}
function dot(i) 
{
this.X = Xpos;
this.Y = Ypos;
this.dx = 0;
this.dy = 0;
if (isNetscape) { 
this.obj = eval("document.dot" + i);
} else {
this.obj = eval("dot" + i + ".style");
}
}
function startanimate() { 
setInterval("animate()", 20);
}
function setInitPositions(dots)
{
var startloc = document.all.tags("LI");
var i = 0;
for (i = 0; i < startloc.length && i < (nDots - 1); i++) {
dots[i+1].X = startloc[i].offsetLeft
startloc[i].offsetParent.offsetLeft - DOTSIZE;
dots[i+1].Y = startloc[i].offsetTop +
startloc[i].offsetParent.offsetTop + 2*DOTSIZE;
}
dots[0].X = dots[1].X;
dots[0].Y = dots[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 = (dots[i].X - dots[j].X);
var dy = (dots[i].Y - dots[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) {
dots[0].X = Xpos;
dots[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(-dots[i].dx * RESISTANCE,
-dots[i].dy * RESISTANCE);

var accel = new vec((spring.X + resist.X)/ MASS,
(spring.Y + resist.Y)/ MASS + GRAVITY);

dots[i].dx += (DELTAT * accel.X);
dots[i].dy += (DELTAT * accel.Y);

if (Math.abs(dots[i].dx) < STOPVEL &&
Math.abs(dots[i].dy) < STOPVEL &&
Math.abs(accel.X) < STOPACC &&
Math.abs(accel.Y) < STOPACC) {
dots[i].dx = 0;
dots[i].dy = 0;
}
dots[i].X += dots[i].dx;
dots[i].Y += dots[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 (dots[i].Y >= height - DOTSIZE - 1) {
if (dots[i].dy > 0) {
dots[i].dy = BOUNCE * -dots[i].dy;
}
dots[i].Y = height - DOTSIZE - 1;
}
if (dots[i].X >= width - DOTSIZE) {
if (dots[i].dx > 0) {
dots[i].dx = BOUNCE * -dots[i].dx;
}
dots[i].X = width - DOTSIZE - 1;
}
if (dots[i].X < 0) {
if (dots[i].dx < 0) {
dots[i].dx = BOUNCE * -dots[i].dx;
}
dots[i].X = 0;
}
dots[i].obj.left = dots[i].X; 
dots[i].obj.top = dots[i].Y; 
}
}
// -->
</script>

Como apreciarás, en el código del Script, este código se repite varias veces:

<dd><img src="s.bullet.gif" width="11" height="11"></dd>
</div><div id="dot1" style="position: absolute; height: 11; width: 11;">

La sentencia: img src="s.bullet.gif" declara el nombre del objeto que circula por la pantalla, que en este caso es "s.bullet.gif". Tú luego le cambiarás la imagen por la que desees colocar. 

width="11" es el ancho de la imagen que sigue al cursor, tú cambiarás ese valor "11", por el que te convenga para la imagen que coloques.

heigth="11" es el ancho de la imagen que sigue al cursor, tú cambiarás ese valor "11", por el que te convenga para la imagen que coloques.

Asimismo, si modificas esos parámetros, debes aplicarlos a cada una de las veces que se repite la sentencia, pues cada una de las veces que consta esta sentencia, muestra una vez la imagen indicada, y al repetir varias veces la sentencia, pues saldrá la misma cantidad de veces la imagen añadida.

Aquí copio nuevamente el código con opción para seleccionarlo, cortar y pegar en tu sitio.

Para ello haces click en cualquier palabra que se halla dentro de la caja, Te diriges a "Edición" en el menú superior de la barra de herramientas, e indicas "Seleccinar todo", luego tomas lo seleccionado dirigiéndote nuevamente a "Edición", pero esta vez indicas "Cortar", y posteriormente te posicionas en tu página, donde quieres colocar este código, entonces te diriges a Edición, y le indicas "Pegar". 

Si deseas hacer las cosas más rápido, puedes verificar en "Edición" (está escrito al lado de las palabras que indican cada orden) que pulsando "Control" + una letra determinada, puedes "seleccionar todo", "cortar" o "pegar" en forma instantánea y con eso evitas tener que ingresar constantemente al menú de "Edición".

Esto es lo que debes pegar debajo de donde dice <Body> en el HTML de tu página:

Si de todos modos, no funciona este efecto, corta el código HTML que debes colocar en tu página, pero antes de hacerlo, pégalo en tu Block de notas, y luego si córtalo de allí y pégalo en tu sitio. Ahora si no creo que haya ningún inconveniente que te impida disfrutar de este bonito efecto.

Y aquí tienes la bolilla que circula siguiendo al ratón, para que la tomes con el botón derecho de tu "mouse":

Recordemos que este Script también puede ser hallado en el programa Depósito, el cual puedes bajar de aquí: webtutorial.com.ar

Buena suerte.