Post by admin™ on Sept 22, 2004 4:37:06 GMT -5
<script>
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);
}
</script>...bear"
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);
}
</script>...bear"