引用【JavaScript】满天星的代码,稍作修改的结果:

            function drawStars() {
for (i = 1; i < 100; ++i) {
ctx.fillText("*", Math.random()*1024, Math.random()*768);
}
}
setInterval("drawStars()", 100);

text被反复绘制,以至占满屏幕,避免这种情况需要在每次repaint之前清除屏幕。code:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title></title>
<style>
canvas {
background-color: white;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="1024" height="768" style="border:1px solid #d3d3d3;">
</canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.font = "30px Verdana";
function clear() {
ctx.clearRect(0, 0, c.width, c.height);
}
function drawStars() {
for (i = 1; i < 300; ++i) {
ctx.fillText("*", Math.random()*1024, Math.random()*768);
}
setTimeout(clear, 90);
}
setInterval(drawStars, 100);
// setInterval不会因为包含有setTimeout而延迟执行,
// 而是严格的按照传入setInterval的参数时间调用drawStars
// 每个setTimeout间也是相互独立的,不会因为上一个setTimeout还在等待时间就无法调用。
// 这里的setInterval和setTimeout不能独立考虑。。。如果interval的时间比较短,那么同一时间会有多个setTimeout在等待执行。。。
// 这样setTimeout除了第一次是按照自己的参数时间调用函数外,其余都是按Interval的时间参数调用。。。
// 如果需要clearInteval;那么需要以var verb = setInterval(drawStars, 100);形式声明变量
// 然后在函数中调用clearInteval(verb)终止循环
</script>
</body> </html>

修改之后(顺便改了颜色)有了“视觉下落”的效果,但是达不到对每个“雪花”的精细控制。。。而且仅仅是视觉上。。没有真正的下落

参考:

1、js innerHTML 改变div内容

code2:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>snow2</title>
</head>
<body>
<script>
// 尝试一个雪花下落。
// var screenWidth = document.documentElement.clientWidth;
// var screenHeight = document.documentElement.clientHeight;
//
// var star = document.createElement("div");
// star.innerHTML = '*';
// star.style.fontSize = 100 + "px";
// document.body.appendChild(star);
//
// var X = Math.random()*screenWidth;
// var Y = Math.random()*screenHeight;
// star.style.position = "absolute";
// star.style.left = X + "px";
// star.style.top = Y + "px";
//
// function down() {
// Y++;
// if (Y > screenHeight) {
// Y = 0;
// }
// star.style.left = X + "px";
// star.style.top = Y + "px";
// }
//
// setInterval(down, 10);
// 创建100个Snowflake对象,设置初始位置--->new star(300, 400);
// Snowflakes.down();
var screenWidth = document.documentElement.clientWidth;
var screenHeight = document.documentElement.clientHeight; var snowflake = [];
var X = [];
var Y = []; var numberOfSnowflake = 0;
function createSnowflake() {
var sf = document.createElement("div");
sf.innerHTML = '*';
sf.style.fontSize = 100 + "px";
document.body.appendChild(sf); X[numberOfSnowflake] = Math.random()*screenWidth;
Y[numberOfSnowflake] = Math.random()*screenHeight;
sf.style.position = "absolute";
sf.style.left = X[numberOfSnowflake] + "px";
sf.style.top = Y[numberOfSnowflake] + "px"; snowflake.push(sf); numberOfSnowflake++;
} function repaint(i) {
snowflake[i].style.left = X[i] + "px";
snowflake[i].style.top = Y[i] + "px";
} function down(i) {
function miniDown() {
Y[i]++;
if (Y[i] > screenHeight) {
X[i] = Math.random()*screenWidth;
Y[i] = 0;
}
repaint(i);
}
setInterval(miniDown, 10);
} var i;
for (i = 0; i <= 100; ++i) {
createSnowflake();
down(numberOfSnowflake);
}
down(0);
</script>
</body>
</html>

【JavaScript】下大雪的更多相关文章

  1. 【转】JavaScript下对去重算法的优化

    本人较懒,直接将链接附上: JavaScript下去重算法优化:http://www.linuxde.net/2013/02/12062.html

  2. PHP与JavaScript下的Cookie操作

    下面的例子列出几种情形交互场景,列出JS和php交互的方法.总结下,以免日后再为cookie问题困扰. setcookie.php getcookie.php 总结: php用自身函数读取php 的c ...

  3. JavaScript下的进制转换

    JavaScript下的进制转换 //十进制转其他进制 var num = 99; console.log('十进制: ', num); console.log('八进制:', (num).toStr ...

  4. javascript下获取guid或者UTC时间作为唯一值

    javascript下,有时出于需要,可以利用guid或UTC时间作为当前页面中的唯一值. 什么场景需要弄这个唯一值? 比如说,用easyUI的treegrid,添加新节点.在treegrid里面 , ...

  5. JavaScript下的setTimeout(fn,0)意味着什么?

    近期在研究异步编程的我对于setTimeout之类的东西异常敏感.在SegmentFault上看到了一个问题<关于SetTimeout时间设为0时>:提问者读了一篇文章,原文解释setTi ...

  6. Javascript下拉导航

    1.右侧导航 tree.js function Toggle(e){ if(!document.getElementById) return; if(!e) var e = window.event; ...

  7. JavaScript下拉框去除重复内容

    下拉框去除重复内容 <script type="text/javascript" src="http://www.joleye.com/libraries/java ...

  8. Javascript下IE与Firefox下的差异兼容写法总结

    http://www.jb51.net/article/23923.htm     总结一部分IE和Firefox的javascript差异写法,对于像书写多浏览器兼容性更好的代码,可以参考下.   ...

  9. JavaScript下的new操作符做了什么?

    可以参考知乎的一篇文章:https://zhuanlan.zhihu.com/p/23987456 参考网上其他人的文章,new发生了以下操作 参考MDN:https://developer.mozi ...

随机推荐

  1. openwrt U盘启动

    参考链接: http://m.blog.csdn.net/blog/zcynical/44892785

  2. CNBlog客户端--第一阶段记录

    开始 五一小长假由于没有出去玩,所以我就用来继续写我的 CNBlog Android 客户端!首先呢!先上图!让大家看看,我做到哪儿了!! 不知道大家看了是什么感觉哈!有意见请评论哦!! 完成度以及遇 ...

  3. Codeforces Round #210 (Div. 1).B

    经典的一道DP题. 题目明显是一道DP题,但是比赛的时候一个劲就在想怎么记录状态和转移.最后想到了一种n^3的方法,写了下,不出所料的超时了. 看了别人的代码才发现竟然是先二分然后再进行DP,像这种思 ...

  4. 妈妈再也不用担心我使用git了

    妈妈再也不用担心我使用git了 Dec 29, 2014 git git由于其灵活,速度快,离线工作等特点而倍受青睐,下面一步步来总结下git的基本命令和常用操作. 安装msysgit 下载地址:ms ...

  5. java pdf 导出方案

    java代码 import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.BaseFont; import org ...

  6. vs2008 怎么在Release下调试代码

    vs2008 怎么在Release下调试代码 (适用VS2005/VS2008) 在当前工程点击右键选择properties,选择 All Configurations C++>General- ...

  7. 第5章 IDA Pro

    5.1 加载一个可执行文件 默认情况下IDA Pro的反汇编代码中不包含PE头或资源节,可以手动指定加载. 5.2 IDA Pro接口 5.2.1 反汇编窗口模式 二进制模式/图形模式: 图形模式:红 ...

  8. 决策树ID3算法python实现 -- 《机器学习实战》

    from math import log import numpy as np import matplotlib.pyplot as plt import operator #计算给定数据集的香农熵 ...

  9. 被Chrome下的remove闪了一下腰

    有用户反映说购物车删除不了东西,于是有了下面的测试. 浏览器:ie7 ie8 ie9 chrome 代码: <a href="javascript:" onclick=&qu ...

  10. “CMake”这个名字是“cross platform make”

    cmake_百度百科 https://baike.baidu.com/item/cmake/7138032?fr=aladdin CMake 可以编译源代码.制作程序库.产生适配器(wrapper). ...