HTML5-陪你去看流星雨

在上一篇的基础上

1、新增流星雨对象

//流星

var MeteorRain = function(){

this.x = -1;

this.y = -1;

this.length = -1;//长度

this.angle = 30; //倾斜角度

this.width = -1;//宽度

this.height = -1;//高度

this.speed = 1;//速度

this.offset_x = -1;//横轴移动偏移量

this.offset_y = -1;//纵轴移动偏移量

this.alpha = 1; //透明度

this.color1 = "";//流星的色彩

this.color2 = "";  //流星的色彩

/****************初始化函数********************/

this.init = function () //初始化

{

this.getPos();

this.alpha = 1;//透明度

this.getRandomColor();

//最小长度,最大长度

var x = Math.random() * 80 + 150;

this.length = Math.ceil(x);

//                  x = Math.random()*10+30;

this.angle = 30; //流星倾斜角

x = Math.random()+0.5;

this.speed = Math.ceil(x); //流星的速度

var cos = Math.cos(this.angle*3.14/180);

var sin = Math.sin(this.angle*3.14/180) ;

this.width = this.length*cos ;  //流星所占宽度

this.height = this.length*sin ;//流星所占高度

this.offset_x = this.speed*cos ;

this.offset_y = this.speed*sin;

}

/**************获取随机颜色函数*****************/

this.getRandomColor = function (){

var a = 255 * Math.random();

a = Math.ceil(a);

var a1 = 255 * Math.random();

a1 = Math.ceil(a1);

var a2 = 255 * Math.random();

a2 = Math.ceil(a2);

//中段颜色

this.color1 = "rgba(" + a.toString() + "," + a1.toString() + "," + a2.toString() + ",1)";

//结束颜色

this.color2 = "black";

}

/***************重新计算流星坐标的函数******************/

this.countPos = function ()//

{

//往左下移动,x减少,y增加

this.x = this.x - this.offset_x;

this.y = this.y + this.offset_y;

}

/*****************获取随机坐标的函数*****************/

this.getPos = function () //

{

//横坐标200--1200

var x = Math.random() * 1000 + 400;

this.x = Math.ceil(x);

x = Math.random() * 600;

//纵坐标小于600

this.y = Math.ceil(x);

}

/****绘制流星***************************/

this.draw = function () //绘制一个流星的函数

{

context.save();

context.beginPath();

context.lineWidth = 3;

context.globalAlpha = this.alpha; //设置透明度

//创建横向渐变颜色,起点坐标至终点坐标

var line = context.createLinearGradient(this.x, this.y,

this.x + this.width,

this.y - this.height);

//分段设置颜色

line.addColorStop(0, "white");

line.addColorStop(0.1, this.color1);

line.addColorStop(0.6, this.color2);

context.strokeStyle = line;

//起点

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

//终点

context.lineTo(this.x + this.width, this.y - this.height);

context.closePath();

context.stroke();

context.restore();

}

this.move = function(){

//清空流星像素

var x = this.x+this.width-this.offset_x;

var y = this.y-this.height;

context.clearRect(x-3,y-3,this.offset_x+5,this.offset_y+5);

//                  context.strokeStyle="red";

//                  context.strokeRect(x,y-1,this.offset_x+1,this.offset_y+1);

//重新计算位置,往左下移动

this.countPos();

//透明度增加

this.alpha -= 0.002;

//重绘

this.draw();

}

}

该对象已自带绘制自己的方法,主要是设置渐变色,设置线宽,然后画一条线

还有移动的方法,就是做偏移,将偏移后的尾巴清除,再重绘

2、初始化若干个流星

在onload监听中加入:

//全局变量

var rains = new Array();

var rainCount = 20;

//onload监听中加入

//流星来了

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

var rain = new MeteorRain();

rain.init();

rain.draw();

rains.push(rain);

}

3、流星出现后,要让其移动

function playRains(){

for (var n = 0; n < rainCount; n++){

var rain = rains[n];

rain.move();//移动

if(rain.y>600){//超出界限后重来

context.clearRect(rain.x,rain.y-rain.height,rain.width,rain.height);

rains[n] = new MeteorRain();

rains[n].init();

}

}

setTimeout("playRains()",50);

}

然后在onload中加入代码:

playRains();

4、添加背景音乐

<audio src="audio/F4 - 陪你去看流星雨.mp3" autoplay="true" loop="true"></audio>

收工!!

时间: 2024-08-08 22:07:03

HTML5-陪你去看流星雨的相关文章

她去看演唱会了,他去唱K了,他们去开房了.都和我无关...因为我要学习。

寂寞. 一个人早起晚睡不难,但在一群晚起早睡的人中早起晚睡不简单. 没人陪你占座,没人陪你背书,没人陪你写作.学习就是孤独的. 食堂,寝室,教室,你就只能去这三个地方 厕所你都要算好时间再去 没人经常短信你,没人经常鼓励你,没人一直关注你 不管是打雷下雨下雹子还是刀子.都要早起前行去学习,你的伙伴会贪睡不去,但不可以是你. 你的同桌室友饭友学友各种友都可以中途打断他们的计划,你不可以!你要学习 你一个人背着书包跑来跑去,你以为很傻很土很幼稚吗? 别人笑,是羡慕,你笑,是自信. 欲望. 想睡懒觉,

HTML5,不只是看上去很美 First Shot Rainbow Burst

25年过去了,Brooks博士著名的"没有银弹"的论断依旧没有被打破.HTML5也是一样.但这并不妨碍HTML5是一个越来越有威力的"炸弹":发展迅速.势不可挡.随着HTML5技术的普及,用HTML5做可视化呈现的项目越来越多了.HTML5的优势明显:网页上直接运行无需插件.手机平板方便兼容.代码开发和维护相对容易,等等.一大波一大波的做Java..NET甚至C++桌面的程序老手们都纷纷开始研究javascript了,而初出茅庐的新一代程序猿更是义无反顾的直奔HTM

分享一下最近陪朋友去急症的故事

分享一下最近陪朋友去急症的故事:普通急性肠炎上午十一点多到急诊室,半小时内登记姓名等基本信息,然后大厅候着.一点多,护士过来叫我们去查血压,问症状,痛疼指数,我们说8/9级.然后让我们大厅继续等.两点多,护士B来叫我们过去,问病史,痛疼指数,回去等.三点多,抽血,留尿,再继续等.因为阿姨隐忍,我也没有经验,我们等了很长时间.当然也有优先级因素,生死存亡的病人优先.四点多,我让阿姨坐上轮椅,确实比凳子舒服,然后问护士什么时候轮到我们,护士带我们去输液.半小时后,拍片.五点多,有床位了,二十分钟后医

陪你去流浪--薛之谦

陪你去流浪 作曲 : 薛之谦 不知道为了什么 忧愁它烦扰着我 有时会借着月光 能带走爱的凄凉 我看着湖面 平平 淡淡 好像还有艘小船 安安 静静的 没人来打扰 这故事挺好 你掀起 远方 漪涟 海浪 慢慢靠近 要我 陪你 流浪 你坚定的模样 我放弃了抵抗 我可以陪你去流浪 也知道下场不怎么样 就快要夜深人静了 反对的只剩下月亮 我会攥着小糖 眺望你方向 快告诉我 你在赶来的路上 我可以陪你去流浪 等你再次粉墨登场 就快要风平浪静了 我避开所有的阻挡 我会带着小伤 眺望你方向 快告诉我 你在赶来的路

HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)

Hive总结(七)Hive四种数据导入方式 (强烈建议去看) Hive几种数据导出方式 https://www.iteblog.com/archives/955 (强烈建议去看) 把MySQL里的数据导入到HDFS 1.使用MySQL工具手工导入 把MySQL的导出数据导入到HDFS的最简单方法就是,使用命令行工具和MySQL语句. 为了导出整个数据表或整个数据库的内容,MySQL提供了mysqldump工具. 比如 SELECT  col1,col2 FORM TABLE INTO OUTFI

《明明白白去看牙》:北大口腔医院的一群中青年医生写的牙的保健与治疗的科普,五星推荐

本书作者是北京大学口腔医院的一群中青年医生.涉及到牙齿的保健与治疗.作者们每天面对病人,还是比较清楚普通大众最关心哪些牙齿知识. 鉴于作者们所供职的机构的权威性,我比较相信这本书. 书中关于牙的保健,涉及到牙的生理结构,如何刷牙,选择牙膏,常见牙齿不适的处置方法(大部分需要去看牙医). 书中讲到的牙病,包括牙周病.牙冠.拔牙.镶牙.种牙.美牙.正畸等.

创业者应该怎么去看投资人的优劣

因为工作的原因,见过的创业者或者说企业家没有几千个,也应该有上百个了.如何判断一个好的值得投资的行业,以及在这个好的行业里面挑选出一个好的创业者,是我之前每天必须要做的功课.投资一个项目经历的周期可能会很长,先看行业,业务模式,然后找其中好的企业和人,这是做完一个投资项目的标准顺序.那么反过来看,创业家如何去找到好的投资人,也可以从这个顺序来考察. 选择一个好的投资人,我认为唯一的标准,就是选择那些投过比较多这个行业项目的基金或者投资人. 社会发展到目前这个阶段,专业化分工不但体现在企业,投资行

codevs——1570 去看电影

1570 去看电影 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 农夫约翰带着他的一些奶牛去看电影.而他的卡车最多只能载重C(100<=C<=5000)公斤,总体上来说,他想在不超过限制的前提下尽可能多地带走牛. 给出N (1 <= N <= 16)头奶牛的体重W_i,计算约翰可以带去看电影的奶牛的最大重量. 输入描述 Input Description * 第 1 行: 2个用空格隔开的整数 C , N

Codevs 1570 去看电影

1570 去看电影 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 农夫约翰带着他的一些奶牛去看电影.而他的卡车最多只能载重C(100<=C<=5000)公斤,总体上来说,他想在不超过限制的前提下尽可能多地带走牛. 给出N (1 <= N <= 16)头奶牛的体重W_i,计算约翰可以带去看电影的奶牛的最大重量. 输入描述 Input Description * 第 1 行: 2个用空格隔开的整数