jquery 兑现撒金币效果
jquery 实现撒金币效果
自己准备金币的图片,直接运行。
html> <head> <title></title> <style type="text/css"> body{padding:0px;margin:0px;font-size:12px;overflow:hidden;background:#000;} #container div{padding:10px;position:absolute;border:0px dotted brown;width:0px;color:#FF0000;cursor:pointer;} .text{padding:10px;color:#ccc;} </style> <script type="text/javascript" src="http://www.cozof.com/images/js/jquery.min.1.5.js"></script> <script type="text/javascript"> var goldFallInterval; var goldFallStart=0; function initGoldFall(){ var length = $('div','#container').length; if(length<4){ for(i=0;i<6;i++){ $('div','#container').clone().prependTo('#container'); } } } function startGoldFall(){ clearInterval(goldFallInterval); endCount = 0; range(); goldFallStart = new Date().getTime(); goldFallInterval= setInterval(dropGoldFall,200); } //排列 function range() { var num = 1; $('div','#container').each(function(i) { var ww = $(window).width();//窗口宽度 var wh = $(window).height(); var ot = -20;//从头部以上开始 $(this).css({"left":(i*(ww/64)) +"px","top":"-50px"});//距左距离保持,距上距离变化 num ++; }); } //降落 function dropGoldFall() { var now = new Date().getTime(); if(now - goldFallStart >3000){ clearInterval(goldFallInterval); } var $objs = $('div','#container'); $objs.each(function(i) { var wh = $(window).height(); var ol = $(this).offset().left; var ot = $(this).offset().top; var rnd = Math.round(Math.random()*100); var rnd2 = Math.round(Math.random()*50); //降落的速度 if(ot<=wh)//如果掉到窗口以下 { $(this).css({"top":(ot+rnd+rnd2) +"px"}); } }); } function fn(){ initGoldFall(); startGoldFall(); } </script> </head> <body> <!--begin--> <div id="container"> <div><img src=image/gold.png ></div> </div> woafdasfasfdasfsadfasfasf<input type=button onclick="fn();" value=test> <!--end--> </body> <script language="javascript"> </script> </html>
问题描述
HTML5游戏中过关希望实现撒金币效果,最开始通过canvas写了几个简单的随机函数绘制金币,发现效果不行。
通过收索发现有jquery实现的下雪效果:
https://github.com/kopipejst/jqSnow
希望更换雪片的贴图,后发现jquery的几个下雪模型都是使用 '❄' 这个符号来实现的,所以无法更换贴图。
最终参考了
http://www.cozof.com/demo/matrix/
中的代码实现了一个简单的。
实现代码
通过调用一下代码,可多次启动。
initGoldFall(); startGoldFall();