JSFX.FallingSprite =
function
(theHtml)
{
this
.superC = JSFX.Layer;
this
.superC(theHtml);
this
.x = Math.random() * (JSFX.Browser.getMaxX()-40);
this
.y = -40;
this
.dx = Math.random() * 4 - 2;
this
.dy = Math.random() * 6 + 2;
this
.ang = 0;
this
.angStep = .2;
this
.amp = 10;
this
.state =
"FALL"
;
this
.moveTo(
this
.x,
this
.y);
this
.show();
}
JSFX.FallingSprite.prototype =
new
JSFX.Layer;
JSFX.FallingSprite.prototype.animate =
function
()
{
if
(
this
.state ==
"OFF"
)
return
;
this
.x +=
this
.dx;
this
.y +=
this
.dy;
this
.ang +=
this
.angStep;
this
.moveTo(
this
.x +
this
.amp*Math.sin(
this
.ang),
this
.y);
if
( (
this
.x > JSFX.Browser.getMaxX()-20)
|| (
this
.x < JSFX.Browser.getMinX()-0)
|| (
this
.y > JSFX.Browser.getMaxY()-40) )
{
if
(
this
.state ==
"STOPPING"
)
{
this
.moveTo(-100,-100);
this
.hide();
this
.state =
"OFF"
;
}
else
{
this
.x = Math.random() * (JSFX.Browser.getMaxX()-40);
this
.y = JSFX.Browser.getMinY()-40;
this
.dx = Math.random() * 4 - 2;
this
.dy = Math.random() * 6 + 2;
this
.ang = 0;
}
}
}
JSFX.FallingObj =
function
(numSprites, theImage, stopTime)
{
this
.id =
"JSFX_FallingObj_"
+JSFX.FallingObj.count++;
this
.sprites =
new
Array();
for
(i=0 ; i<numSprites; i++)
{
this
.sprites[i]=
new
JSFX.FallingSprite(theImage);
}
window[
this
.id]=
this
;
this
.animate();
if
(stopTime)
setTimeout(
"window."
+
this
.id+
".stop()"
, stopTime*1000);
}
JSFX.FallingObj.count = 0;
JSFX.FallingObj.prototype.stop =
function
()
{
for
(i=0 ; i<
this
.sprites.length ; i++)
this
.sprites[i].state =
"STOPPING"
;
}
JSFX.FallingObj.prototype.animate =
function
()
{
setTimeout(
"window."
+
this
.id+
".animate()"
, 40);
for
(i=0 ; i<
this
.sprites.length ; i++)
this
.sprites[i].animate();
}
JSFX.Falling =
function
(n, theImage, stopTime)
{
myFalling =
new
JSFX.FallingObj(n, theImage, stopTime);
return
myFalling;
}