<head>
<title>网页特效|Linkweb.cn/Js|---页面漫天飞雪</title>
<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">
</head>
<body bgcolor="#000000" onLoad="snow()">
<script language="JavaScript">
<!--
N = 40
Y = new Array()
X = new Array()
S = new Array()
A = new Array()
B = new Array()
M = new Array()
V = (document.layers)?1:0
iH=(document.layers)?window.innerHeight:window.document.body.clientHeight
iW=(document.layers)?window.innerWidth:window.document.body.clientWidth
for (i=0i <Ni++){
Y[i]=Math.round(Math.random()*iH)
X[i]=Math.round(Math.random()*iW)
S[i]=Math.round(Math.random()*5+2)
A[i]=0
B[i]=Math.random()*0.1+0.1
M[i]=Math.round(Math.random()*1+1)
}
if (V){
for (i = 0i <Ni++)
{document.write("<LAYER NAME='sn"+i+"' LEFT=0 TOP=0 BGCOLOR='#FFFFF0' CLIP='0,0,"+M[i]+","+M[i]+"'></LAYER>")}
}
else{
document.write('<div style="position:absolutetop:0pxleft:0px">')
document.write('<div style="position:relative">')
for (i = 0i <Ni++)
{document.write('<div id="si" style="position:absolutetop:0left:0width:'+M[i]+'height:'+M[i]+'background:#fffff0font-size:'+M[i]+'"></div>')}
document.write('</div></div>')
}
function snow(){
var H=(document.layers)?window.innerHeight:window.document.body.clientHeight
var W=(document.layers)?window.innerWidth:window.document.body.clientWidth
var T=(document.layers)?window.pageYOffset:document.body.scrollTop
var L=(document.layers)?window.pageXOffset:document.body.scrollLeft
for (i=0i <Ni++){
sy=S[i]*Math.sin(90*Math.PI/180)
sx=S[i]*Math.cos(A[i])
Y[i]+=sy
X[i]+=sx
if (Y[i] >H){
Y[i]=-10
X[i]=Math.round(Math.random()*W)
M[i]=Math.round(Math.random()*1+1)
S[i]=Math.round(Math.random()*5+2)
}
if (V){document.layers['sn'+i].left=X[i]document.layers['sn'+i].top=Y[i]+T}
else{si[i].style.pixelLeft=X[i]si[i].style.pixelTop=Y[i]+T}
A[i]+=B[i]
}
setTimeout('snow()',10)
}
//-->
</script>
<script language="Javascript">
<!--
function selectAll(theField){
var tempval=eval("document."+theField)
tempval.focus()
tempval.select()
}
//-->
</script>
</table>
</body>
没用Java写过,现这种效果最好是用DriectX或者OpenGL里实现,要不,用Java这类托管语言来做的话,所有的东西都是面向对象的,堆和托管堆交互很频繁,还有开N多线程,线程的数量是有限制的。如果你需要的效果是直接在屏幕上即没有容器的那种,可以直接操作显存试试,这个要用底层语言比如C嵌汇编操作显存的文件映射区域等等,其中雪花飘落的过程用一种计算表达式来实现,比如其中有一些速度因子,大小因子,轨迹因子,等等(看自己喜好)。记得以前写过一个DriectX里的粒子运动效果,和雪花飘落的功能很相似,只是它不能直接在桌面上显示,需要容器。