js实现下雪实例

下雪实例

知识点:

  1. canvas画布
  2. 数组
  3. 绘画函数

效果:

源码:

------------------------------

<!doctype html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="Generator" content="">

<meta name="Author" content="">

<meta name="Keywords" content="">

<meta name="Description" content="">

<title>下雪</title>

<style>

*{padding:0;margin:0}

html{overflow:hidden}

</style>

</head>

<body>

<canvas id="canvas" style="background:#111"></canvas>

<audio src="http://dx.sc.chinaz.com/Files/DownLoad/sound1/201210/2178.mp3" autoplay loop/>

<audio src="http://dx.sc.chinaz.com/Files/DownLoad/sound1/201205/1430.mp3" autoplay loop/>

<script type="text/javascript">

window.onload = function(){

//获取画布对象

var canvas = document.getElementById("canvas");

//获取画布的上下文

var context =canvas.getContext("2d");

//获取浏览器屏幕的宽度和高度

var w = window.innerWidth;

var h = window.innerHeight;

//设置canvas的宽度和高度

canvas.width = w;

canvas.height = h;

//1:如何产生雪花,一个圆 ,arc(x,y,r,start,end)

//初始化雪花数量

var num = 200;

//雪花数组

var snows = [];

for(var i=0;i<num;i++){

//x,y圆心掉的坐标位置,r代表圆的半径,d每个圆的每个圆之间的间距,c代表的颜色

var r = randColor();

snows.push({

x:Math.random()*w,

y:Math.random()*h,

r:Math.random()*10,

d:Math.random()*num

});

};

//绘画的函数

function draw(){

context.clearRect(0,0,w,h);

context.beginPath();

for(var i=0;i<num;i++){

var snow = snows[i];

context.fillStyle = "rgba(255,255,255,0.9)";

context.moveTo(snow.x,snow.y);

context.arc(snow.x,snow.y,snow.r,0,Math.PI*2);

}

context.fill();

//掉落

drop();

};

var angle = 0;

function drop()

{

angle += 0.01;

for(var i = 0; i < num; i++){

var p = snows[i];

//记住两个公式:Math.sin(弧度)返回是一个0 1 -1 的数字

//math.cos(1 0 -1 ) 自由体,

p.y += Math.cos(angle+p.d) + 1 + p.r*0.625;

p.x += Math.sin(angle) * 8 ;

//如果雪花到了边界,进行边界处理

if(p.x > w+5 || p.x < -5 || p.y > h){

if(i%4 > 0) {

snows[i] = {x: Math.random()*w, y: -10, r: p.r, d: p.d};

}else{

//控制方向

if(Math.sin(angle) > 0){

snows[i] = {x: -5, y: Math.random()*h, r: p.r, d: p.d};

}else{

snows[i] = {x: w+5, y: Math.random()*h, r: p.r, d: p.d};

}

}

}

}

};

//执行和调用函数

draw();

setInterval(draw,10);

//随机颜色

function randColor(){

var r = Math.floor(Math.random() * 256);

var g = Math.floor(Math.random() * 256);

var b = Math.floor(Math.random() * 256);

return "rgb("+r+","+g+","+b+")";

};

};

</script>

</body>

</html>

时间: 2024-07-31 22:23:32

js实现下雪实例的相关文章

js格式化数字实例代码

js格式化数字实例代码:数字往往需要进行一定的格式化,一来是便于阅读,二来是实际需要,比如钱数就常常按千位逗号分隔,下面就是一个这样的函数能够是此功能,并且能够保留指定书目的小数,且自动实现四舍五入效果.代码实例如下: function fmoney(s,n) { n=n>0&&n<=20?n:2; s=parseFloat((s+"").replace(/[^\d\.-]/g,"")).toFixed(n)+"";

VBS操作JS网页元素实例

'=========================================================================='' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0'' NAME: '' AUTHOR: Microsoft , Microsoft' DATE : 2014/8/14'' COMMENT: ''==========================

jquery.cycle.js简单用法实例

样式: a{text-decoration: none;} *{margin:0; padding:0;} /*容器设置*/ .player { width:216px; height:248px; background:url(http://i2.itc.cn/20120117/2cc0_da8f6c82_c8da_693d_7714_9533a013006a_3.jpg) no-repeat; background-color:#ede1d1; position:relative; padd

简单的JS运动封装实例---侧栏分享到

1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档</title> 6 <style> 7 #div1 {width: 100px; height: 200px; background: red;

Js读写cookie实例

统计访问次数 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>New Page 5</title> <meta name="GENERATOR" content="Microsoft FrontPage 3.0"> <s

JS对象模块化实例

<!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script> <script type="text/javascript"> var inf

Js 调用 WebService 实例

Html页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Js调用WebSer

C#实现的JS操作类实例

本文实例讲述了C#实现的JS操作类.分享给大家供大家参考.具体如下: 这个C#类封装了常用的JS客户端代码操作,包括弹出对话框.返回上一页,通过JS转向,弹出警告框并转向等. using System.Web; namespace DotNet.Utilities { /// <summary> /// 客户端脚本输出 /// </summary> public class JsHelper { /// <summary> /// 弹出信息,并跳转指定页面. /// &

2019手机号码JS正则表达式验证实例代码

这篇文章主要介绍了2019手机号码JS正则表达式验证实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 简介 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符