Javascript über mehrere Frames hinweg anzeigen
Wolfgang
- javascript
Hallo Forum,
ich möchte das folgende Javascript (fallende Schneeflocken) über mehrere Frames hinweg anzeigen.
Ist dies möglich? Falls ja, wie könnte eine konkrete Lösung aussehen?
Natürlich könnte ich das Script für jeden Frame einzeln starten. Nachteil: Die Fallbewegung der Schneeflocken ist nicht durchgehend. Am Übergang zum nächsten Frame verschwindet die Flocke, da das Script in jedem Frame andere Bewegungsmuster erzeugt.
Vielleicht habt ihr ja eine Idee, wie das Problem zu beseitigen ist.
Hier ist das Schnee-Script:
<script language="JavaScript1.2">
grphcs=new Array(6)
Image0=new Image();
Image0.src=grphcs[0]="snow2.gif";
Image1=new Image();
Image1.src=grphcs[1]="snow2.gif"
Image2=new Image();
Image2.src=grphcs[2]="snow2.gif"
Image3=new Image();
Image3.src=grphcs[3]="snow2.gif"
Image4=new Image();
Image4.src=grphcs[4]="snow2.gif"
Image5=new Image();
Image5.src=grphcs[5]="snow2.gif"
Amount=6; //Smoothness depends on image file size, the smaller the size the more you can use!
Ypos=new Array();
Xpos=new Array();
Speed=new Array();
Step=new Array();
Cstep=new Array();
ns=(document.layers)?1:0;
ns6=(document.getElementById&&!document.all)?1:0;
if (ns){
for (i = 0; i < Amount; i++){
var P=Math.floor(Math.random()*grphcs.length);
rndPic=grphcs[P];
document.write("<LAYER NAME='sn"+i+"' LEFT=0 TOP=0><img src="+rndPic+"></LAYER>");
}
}
else{
document.write('<div style="position:absolute;top:0px;left:0px"><div style="position:relative">');
for (i = 0; i < Amount; i++){
var P=Math.floor(Math.random()*grphcs.length);
rndPic=grphcs[P];
document.write('<img id="si'+i+'" src="'+rndPic+'" style="position:absolute;top:0px;left:0px">');
}
document.write('</div></div>');
}
WinHeight=(ns||ns6)?window.innerHeight:window.document.body.clientHeight;
WinWidth=(ns||ns6)?window.innerWidth-70:window.document.body.clientWidth;
for (i=0; i < Amount; i++){
Ypos[i] = Math.round(Math.random()*WinHeight);
Xpos[i] = Math.round(Math.random()*WinWidth);
Speed[i]= Math.random()*5+3;
Cstep[i]=0;
Step[i]=Math.random()*0.1+0.05;
}
function fall(){
var WinHeight=(ns||ns6)?window.innerHeight:window.document.body.clientHeight;
var WinWidth=(ns||ns6)?window.innerWidth-70:window.document.body.clientWidth;
var hscrll=(ns||ns6)?window.pageYOffset:document.body.scrollTop;
var wscrll=(ns||ns6)?window.pageXOffset:document.body.scrollLeft;
for (i=0; i < Amount; i++){
sy = Speed[i]*Math.sin(90*Math.PI/180);
sx = Speed[i]*Math.cos(Cstep[i]);
Ypos[i]+=sy;
Xpos[i]+=sx;
if (Ypos[i] > WinHeight){
Ypos[i]=-60;
Xpos[i]=Math.round(Math.random()*WinWidth);
Speed[i]=Math.random()*5+3;
}
if (ns){
document.layers['sn'+i].left=Xpos[i];
document.layers['sn'+i].top=Ypos[i]+hscrll;
}
else if (ns6){
document.getElementById("si"+i).style.left=Math.min(WinWidth,Xpos[i]);
document.getElementById("si"+i).style.top=Ypos[i]+hscrll;
}
else{
eval("document.all.si"+i).style.left=Xpos[i];
eval("document.all.si"+i).style.top=Ypos[i]+hscrll;
}
Cstep[i]+=Step[i];
}
setTimeout('fall()',20);
}
window.onload=fall
//-->
</script>
Viele Grüße,
Wolfgang
Hallo Wolfgang,
ich möchte das folgende Javascript (fallende Schneeflocken) über mehrere Frames hinweg anzeigen.
das script hast du nicht selbst geschrieben sondern irgendwo kopiert/heruntergeladen, stimmts?
du bist hier bei SELFhtml gelandet, da wird schon erwartet, das du dich mit deinem problem vorher selber schon mal auseinandergesetzt hast und uns deine lösungsansätze mitteilst, damit wir sehen können, wo es "klemmt".
mit sehr hohem aufwand wäre es möglich, die bewegung der bilder über frames hinweg zu syncronisieren.
den aufwand wird sich bei einem derartigen script mit reinem anschauungswert warscheinlich keiner hier machen.
du könntest dich mit deiner frage an den autor wenden.
oder deine seite ohne frames aufbauen, wenn dir das die schneeflocken wert sind.
freundl. grüsse aus berlin, Raik
hi,
ich möchte das folgende Javascript (fallende Schneeflocken) über mehrere Frames hinweg anzeigen.
dann warne mich hier bitte vor der fertigen seite, in dem du den URL angibst.
du verbrätst damit nämlich nur einen haufen CPU-kapazität für einen effekt wirklich äusserst zweifelhafter sinnhaftigkiet.
gruss,
wahsaga