Type_Document_Title_Here
Published on April 16, 2004 By persian designer In Welcome
Type_Document_Title_Here function getScale(c, height) { var t = Math.sqrt(2 * height / c.gravity); var scale = 4 * height / sqr(t); return scale; } function sqr(x) { return x * x; } function updateBounce(c) { var bottom = getViewYOffset() + getViewHeight() - c.imageHeight; for (var i = 0; i < c.imageCount; i++) { var name = c.prefix + i; var scale = c.pScale[name]; var x = getLayerX(name) + c.xSpeed[name]; var y = -scale * sqr(c.pIndex[name]) + c.pHeight[name]; if (y > 0) y = bottom - y; else y = bottom; var bounds = outOfBounds(c, x, y, c.imageWidth, c.imageHeight); if (bounds & 1) { // left x = 2 * getViewXOffset() - x; c.xSpeed[name] = -c.xSpeed[name] * c.elasticity; } if (bounds & 2) { // right x = 2 * (getViewXOffset() + getViewWidth() - c.imageWidth) - x; c.xSpeed[name] = -c.xSpeed[name] * c.elasticity; } moveLayer(name, x, y); if ((c.pIndex[name] += 0.5) > c.pLimit[name]) { c.xSpeed[name] *= 1 - c.friction; c.pIndex[name] -= Math.sqrt(c.pHeight[name] / scale); c.pHeight[name] = Math.max(0.25, c.pHeight[name] * c.elasticity); c.pIndex[name] = -(c.pLimit[name] = Math.sqrt(c.pHeight[name] / scale)); if (c.pHeight[name] < c.kickThreshold) { if (c.kickOpt == 1) { // kick c.pHeight[name] = 100 + random(getViewHeight()); c.xSpeed[name] = random(41) - 20; scale = (c.pScale[name] = getScale(c, c.pHeight[name])); c.pIndex[name] = -(c.pLimit[name] = Math.sqrt(c.pHeight[name] / scale)); } else if (c.kickOpt == 2) { // drop c.pHeight[name] = getViewHeight() + c.imageHeight + 100 + random(500); c.pScale[name] = getScale(c, c.pHeight[name]); c.xSpeed[name] = random(41) - 20; c.pIndex[name] = 0; c.pLimit[name] = Math.sqrt(c.pHeight[name] / scale); } } } } setTimeout('updateBounce(c' + c.uid + ')', c.updateInterval); } msie = navigator.appVersion.indexOf("MSIE") != -1; function layerSupport() { return (document.all || document.layers); } layers = new Array(); layerX = new Array(); layerY = new Array(); cursorX = 0; cursorY = 0; function getViewWidth() { if (msie) return document.body.clientWidth; else return window.innerWidth; } function getViewHeight() { if (msie) return document.body.clientHeight; else return window.innerHeight; } function getViewXOffset() { if (msie) return document.body.scrollLeft; else return window.pageXOffset; } function getViewYOffset() { if (msie) return document.body.scrollTop; else return window.pageYOffset; } function getLayerX(i) { return layerX[i]; } function getLayerY(i) { return layerY[i]; } function moveLayer(i, x, y) { layerX[i] = x; layerY[i] = y; if (msie) { layers[i].style.pixelLeft = x; layers[i].style.pixelTop = y; } else { layers[i].left = x; layers[i].top = y; } } function setVisible(i, show) { if (msie) layers[i].style.visible = show ? "show" : "hidden"; else layers[i].visibility = show; } function outOfBounds(config, x, y, w, h) { var result = 0; // note that fudge factor isn't used for bottom if (x < getViewXOffset() - config.xFudge) result |= 1; // Left else if (x + w >= getViewXOffset() + getViewWidth() + config.xFudge) result |= 2; // Right if (y + h >= getViewYOffset() + getViewHeight()) result |= 4; // Bottom else if (y < getViewYOffset() - config.yFudge) result |= 8; // Top return result; } function random(bound) { return Math.floor(Math.random() * bound); } function randomX(config) { return getViewXOffset() + random(getViewWidth() - config.imageWidth); } function randomY(config) { return getViewYOffset() - config.yFudge + random(getViewHeight() + config.yFudge - config.imageHeight); } function setVisible(i, show) { if (msie) layers[i].style.visibility = show ? "" : "hidden"; else layers[i].visibility = show ? "show" : "hide"; } function writeImage(image, name, x, y) { layerX[name] = x; layerY[name] = y; if (msie) { document.writeln('
'); layers[name] = document.all[name]; } else { document.writeln(''); layers[name] = document.layers[name]; } } function writeImages(config) { for (var i = 0; i < config.imageCount; i++) { var startX = randomX(config); var startY = config.startOnScreen ? randomY(config) : -config.imageHeight; var name = config.prefix + i; writeImage(config.image, name, startX, startY); } } function cursorXY(e) { cursorX = msie ? (getViewXOffset() + event.clientX) : e.pageX; cursorY = msie ? (getViewYOffset() + event.clientY) : e.pageY; } function captureXY() { if (!msie) { document.captureEvents(Event.MOUSEMOVE); } document.onmousemove = cursorXY; } function config() { this.xFudge = 0; this.yFudge = 0; this.updateInterval = 50; this.startOnScreen = true; this.imageCount = 1; } if (layerSupport()) { c205 = new config(); c205.uid = 205; c205.prefix = "y_bounce205"; c205.image = "http://us.f1.yahoofs.com/users/71a25fc8/bc/72df/__tn_/c527.jpg?ph5UocAB84AcqvE2"; c205.imageWidth = 130; c205.imageHeight = 138; c205.imageCount = 1; c205.gravity = 4; c205.friction = 0.1; c205.elasticity = 0.50; c205.topWall = 0; c205.xSpeed = new Array(); c205.pHeight = new Array(); c205.pIndex = new Array(); c205.pScale = new Array(); c205.pLimit = new Array(); c205.kickThreshold = 5; c205.kickOpt = 1; for (var i = 0; i < c205.imageCount; i++) { var name = c205.prefix + i; c205.xSpeed[name] = random(41) - 20; c205.pHeight[name] = -1 == -1 ? randomY(c205) : -1 + random(50); c205.pScale[name] = getScale(c205, c205.pHeight[name]); c205.pLimit[name] = Math.sqrt(c205.pHeight[name] / c205.pScale[name]); c205.pIndex[name] = 0; writeImage(c205.image, name, randomX(c205), c205.pHeight[name]); } setTimeout('updateBounce(c205)', c205.updateInterval); }
bc6229-002.JPG - 162775 Bytes
And if I told you that I loved you
You'd maybe think there's something wrong
I'm not a man of too many faces
The mask I wear is one
Those who speak know nothing
And find out to their cost
Like those who curse their luck in too many places
And those who smile are lost
farhang

Comments
No one has commented on this article. Be the first!