jquery制作 随机弹跳的小球特效


Posted in Javascript onFebruary 01, 2015

以下是源码:

 <!doctype html>

 <html>

 <head>

 <title>HTML5 随机弹跳的小球</title>

 <style>

 body{

 font-family: 微软雅黑;    

 }

 body,h1{

 margin:0;

 }

 canvas{

 display:block;margin-left: auto;margin-right: auto;

 border:1px solid #DDD;    

 background: -webkit-linear-gradient(top, #222,#111);

 }    

 </style>

 </head>

 <body>

 <h1>HTML5特效 随机弹跳的小球</h1>

 <div>请使用支持HTML5的浏览器开打本页。 <button id="stop-keleyi-com">暂停</button>

 <button id="run-keleyi-com">继续</button>

 <button id="addBall-keleyi-com">增加小球</button> <button onclick="javascript:window.location.reload();">刷新</button>

 <br />每次刷新页面的小球大小,颜色,运动路线,都是新的,可以点击上面各个按钮看看效果。

 </div>

 <canvas id="canvas-keleyi-com" >

 </canvas>

 <script type="text/javascript" src="http://keleyi.com/keleyi/pmedia/jquery/jquery-1.11.0.min.js"></script>

 <script type="text/javascript">

 var nimo = {

 aniamted: null,

 content: null,

 data: {

 radiusRange: [5, 20],

 speedRange: [-5, 5],

 scrollHeight: null,

 scrollWdith: null

 },

 balls: [],

 ele: {

 canvas: null

 },

 fn: {

 creatRandom: function (startInt, endInt) {//生产随机数

 var iResult;

 iResult = startInt + (Math.floor(Math.random() * (endInt - startInt + 1)));

 return iResult

 },

 init: function () {

 nimo.data.scrollWdith = document.body.scrollWidth;

 nimo.data.scrollHeight = document.body.scrollHeight;

 nimo.ele.canvas = document.getElementById('canvas-ke'+'leyi-com');

 nimo.content = nimo.ele.canvas.getContext('2d');

 nimo.ele.canvas.width = nimo.data.scrollWdith - 50;

 nimo.ele.canvas.height = nimo.data.scrollHeight - 100;

 },

 addBall: function () {

 var aRandomColor = [];

 aRandomColor.push(nimo.fn.creatRandom(0, 255));

 aRandomColor.push(nimo.fn.creatRandom(0, 255));

 aRandomColor.push(nimo.fn.creatRandom(0, 255));

 var iRandomRadius = nimo.fn.creatRandom(nimo.data.radiusRange[0], nimo.data.radiusRange[1]);

 var oTempBall = {

 coordsX: nimo.fn.creatRandom(iRandomRadius, nimo.ele.canvas.width - iRandomRadius),

 coordsY: nimo.fn.creatRandom(iRandomRadius, nimo.ele.canvas.height - iRandomRadius),

 radius: iRandomRadius,

 bgColor: 'rgba(' + aRandomColor[0] + ',' + aRandomColor[1] + ',' + aRandomColor[2] + ',0.5)'

 };

 oTempBall.speedX = nimo.fn.creatRandom(nimo.data.speedRange[0], nimo.data.speedRange[1]);

 if (oTempBall.speedX === 0) {

 oTempBall.speedX = 1

 }

 if (oTempBall.speedY === 0) {

 oTempBall.speedY = 1

 }

 oTempBall.speedY = nimo.fn.creatRandom(nimo.data.speedRange[0], nimo.data.speedRange[1]);

 nimo.balls.push(oTempBall)

 },

 drawBall: function (bStatic) {

 var i, iSize;

 nimo.content.clearRect(0, 0, nimo.ele.canvas.width, nimo.ele.canvas.height)

 for (var i = 0, iSize = nimo.balls.length; i < iSize; i++) {

 var oTarger = nimo.balls[i];

 nimo.content.beginPath();

 nimo.content.arc(oTarger.coordsX, oTarger.coordsY, oTarger.radius, 0, 10);

 nimo.content.fillStyle = oTarger.bgColor;

 nimo.content.fill();

 if (!bStatic) {

 if (oTarger.coordsX + oTarger.radius >= nimo.ele.canvas.width) {

 oTarger.speedX = -(Math.abs(oTarger.speedX))

 }

 if (oTarger.coordsX - oTarger.radius <= 0) {

 oTarger.speedX = Math.abs(oTarger.speedX)

 }

 if (oTarger.coordsY - oTarger.radius <= 0) {

 oTarger.speedY = Math.abs(oTarger.speedY)

 }

 if (oTarger.coordsY + oTarger.radius >= nimo.ele.canvas.height) {

 oTarger.speedY = -(Math.abs(oTarger.speedY))

 }

 oTarger.coordsX = oTarger.coordsX + oTarger.speedX;

 oTarger.coordsY = oTarger.coordsY + oTarger.speedY;

 }

 }

 },

 run: function () {

 nimo.fn.drawBall();

 nimo.aniamted = setTimeout(function () {

 nimo.fn.drawBall();

 nimo.aniamted = setTimeout(arguments.callee, 10)

 }, 10)

 },

 stop: function () {

 clearTimeout(nimo.aniamted)

 }

 }

 }

 window.onload = function () {

 nimo.fn.init();

 var i;

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

 nimo.fn.addBall();

 }

 nimo.fn.run();

 document.getElementById('stop-kel'+'eyi-com').onclick = function () {

 nimo.fn.stop()

 }

 document.getElementById('run-keley'+'i-com').onclick = function () {

 nimo.fn.stop()

 nimo.fn.run()

 }

 document.getElementById('addBall-k'+'eleyi-com').onclick = function () {

 var i;

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

 nimo.fn.addBall();

 }

 nimo.fn.drawBall(true);

 }

 }

 </script>

 </body>

 </html>
Javascript 相关文章推荐
js验证表单大全
Nov 25 Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
May 17 Javascript
js getBoundingClientRect() 来获取页面元素的位置
Nov 25 Javascript
基于jquery的分页控件(C#)
Jan 06 Javascript
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
Apr 12 Javascript
浅谈javascript事件取消和阻止冒泡
May 26 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
Mar 21 Javascript
深入理解AngularJs-scope的脏检查(一)
Jun 19 Javascript
如何编写一个 Webpack Loader的实现
Oct 18 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 #Javascript
jquery制作LED 时钟特效
Feb 01 #Javascript
thinkphp 表名 大小写 窍门
Feb 01 #Javascript
javascript实现带节日和农历的日历特效
Feb 01 #Javascript
2种jQuery 实现刮刮卡效果
Feb 01 #Javascript
jQuery实现炫酷的鼠标轨迹特效
Feb 01 #Javascript
jQuery+CSS3实现树叶飘落特效
Feb 01 #Javascript
You might like
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
Laravel如何友好的修改.env配置文件详解
2017/06/07 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
jQuery之日期选择器的深入解析
2013/06/19 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
package.json文件配置详解
2017/06/15 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
微信小程序如何使用globalData的方法
2019/06/06 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
python 简单的绘图工具turtle使用详解
2017/06/21 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
软件测试题目
2013/02/27 面试题
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
文明家庭事迹材料
2014/12/20 职场文书
谢师宴学生致辞
2015/07/27 职场文书
员工旷工检讨书
2015/08/15 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
2016五一手机促销广告语
2016/01/28 职场文书