专栏首页深圳java培训深圳Java培训:使用JS实现简单喷泉效果
原创

深圳Java培训:使用JS实现简单喷泉效果

深圳Java培训:使用JS实现简单喷泉效果

最近,在教学生使用JS的基本操作,为了练习JS的基本作用,特地写了一个喷泉效果,代码如下:

页面代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script src="js/particle.js" type="text/javascript" charset="utf-8"></script>

<style type="text/css">

body{

margin: 0px;

}

</style>

</head>

<body>

</body>

</html>

Particle.js代码如下:

window.onload = function(){

// 创建一个画布对象

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

// 设置大小和颜色

canvas.width = window.innerWidth;

canvas.height = window.innerHeight;

canvas.style.backgroundColor = "#333333";

// 将画布放置到body里

document.body.appendChild(canvas);

// 得到画笔

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

// 定义一个存放所有粒子的数组

var particles = [ ];

// 调用显示粒子

showParticle();

// 创建并显示粒子的方法

function showParticle(){

// 循环操作

setInterval(function(){

// 清空画布

context.clearRect(0,0,canvas.width, canvas.height);

// 创建粒子

var p = new Particle(canvas.width * 0.5, canvas.height * 0.5);

// 将粒子装入存放粒子的数组

particles.push(p);

// 循环更新所有粒子的位置

for (var i = 0;i<particles.length;i++) {

// 更新位置

particles[i].updateData();

}

}, 50);

}

function Particle(x, y){

// 原坐标

this.x = x;

this.y = y;

// 初始出现的改变的y的值

this.yVal = -5;

// 改变的x的值

this.xVal = Math.random() * 8 - 4;

// 定义一个下降的重力加速度

this.g = 0.1;

// 更新位置

this.updateData = function(){

// X值的变化

this.x = this.x + this.xVal;

// Y值的变化

this.y = this.y + this.yVal;

// 每次改变Y值速度的变化

this.yVal = this.yVal + this.g;

// 生成一个随机颜色

context.fillStyle = "#" + Math.floor(Math.random() * 0xffffff).toString(16);

// 将更新位置后的圆绘制出来

this.draw();

};

// 绘图的方法

this.draw = function(){

// 开始画图

context.beginPath();

// 画圆

context.arc(this.x, this.y,5,0,Math.PI * 2, false);

// 结束画图

context.closePath();

// 填充

context.fill();

};

}

};

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • VM stack in Chrome

    http://stackoverflow.com/questions/17367560/chrome-development-tool-vm-file-from...

    Jerry Wang
  • 是时候开始学小程序开发了

    在去年2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线 。时至今日,小程序已经有整整一年时间了 。在2017年12月28日,微信更新的...

    架构师修行之路
  • 可视化流式地理空间数据

    最近参与了一个涉及流媒体信用卡交易数据并根据风险概率对其进行分类的项目。在此基础上,想探索可视化数据的选项。决定专注于地理方面,因为它是尝试识别欺诈性交易时的关...

    代码医生工作室
  • 使用electron开发桌面级小程序自动部署系统

    支持部署小程序开发者工具的坑,接下来我将此次开发过程的思考和问题进行总结,从多个角度来介绍本项目。

    李文杨
  • 为什么Note.js 里面没有sap.ui.core.Control.extend()这样的代码

    UI5 team的人写了一些Maven plugin,Maven build时,首先通过一个xslt在target folder生成一个note.api.js:

    Jerry Wang
  • 由 CSRF 引起的 XSS 漏洞小结

    这篇文章中有一个操作,就是修改缓存文件,从而达到 getshell 的目的,而其中修改缓存文件的功能是写在 /adminxxx/save.php 中的 edit...

    信安之路
  • 深入理解Vue组件3大核心概念

    本文主要介绍属性、事件和插槽这三个vue基础概念、使用方法及其容易被忽略的一些重要细节。如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一...

    Fundebug
  • Android 丢帧原理以及解决方案

    开发中的卡顿我想没跟人都遇到过,之前也是搜博客看看怎么个解决办法,没有认真研究过,今天我打算跟大家聊一聊。

    Android架构
  • 来学习几个简单的Hive函数吧!

    咳咳,今天来介绍一下几个Hive函数吧,先放一张我登哥划水的照片,希望大家也做一只自由的鱼儿,在知识的海洋里游呀游,嘻嘻!

    AI科技大本营
  • 如何系统的学习web前端开发?

    因为许多前端新人自学一段时间之后,就迷茫了,不知道学到了什么阶段,也不清楚接下来该往哪个方向学习。要知道前端开发的方向非常的多,相互之间的知识分叉也非常的多。

    web前端教室

扫码关注云+社区

领取腾讯云代金券