没用Java写过,现这种效果最好是用DriectX或者OpenGL里实现,要不,用Java这类托管语言来做的话,所有的东西都是面向对象的,堆和托管堆交互很频繁,还有开N多线程,线程的数量是有限制的。如果你需要的效果是直接在屏幕上即没有容器的那种,可以直接操作显存试试,这个要用底层语言比如C嵌汇编操作显存的文件映射区域等等,其中雪花飘落的过程用一种计算表达式来实现,比如其中有一些速度因子,大小因子,轨迹因子,等等(看自己喜好)。记得以前写过一个DriectX里的粒子运动效果,和雪花飘落的功能很相似,只是它不能直接在桌面上显示,需要容器。
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、灞桥网络推广、小程序定制开发、灞桥网络营销、灞桥企业策划、灞桥品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供灞桥建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
第一种。。你的雪花是图片,那么你自己多做几张旋转的图片,在每次飘落的时候,1秒后换取另外一张图片。或者做成gif图片。
第二种:你的是自己画的雪花,那么你每秒要重新绘制你的雪花。
闪屏 是指面板刷新带来的负面的效果。。
下面是雪花飘落的js代码
拷进去就好了,或者调用!!!!
script language="JavaScript"
!--
N =20;
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=0; i N; i++){
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+7);
}
if (V){
for (i = 0; i N; i++)
{document.write("LAYER NAME='sn"+i+"' LEFT=0 TOP=0 BGCOLOR='#FFFFF0' CLIP='0,0,"+M[i]+","+M[i]+"';z-index: 1font color=white size=3 face='Wingdings'T/font/LAYER")}
}
else{
document.write('div style="position:absolute;top:0px;left:0px;z-index: 1"');
document.write('div style="position:relative;z-index: 1"');
for (i = 0; i N; i++)
{document.write('div id="si" style="position:absolute;z-index: 1;top:0;left:0;width:'+M[i]+';height:'+M[i]+';font-size:'+M[i]+'"font color=white size=3 face="Wingdings"T/font/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=0; i N; i++){
sy=S[i];
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+7);
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()',40);
}
snow()
//--
/script