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 相关文章推荐
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
Jul 10 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
Mar 01 Javascript
谈谈关于JavaScript 中的 MVC 模式
Apr 11 Javascript
jQuery新的事件绑定机制on()示例应用
Jul 18 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
Oct 09 Javascript
基于jQuery制作小图标上下滑动特效
Jan 18 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
Nov 20 Javascript
详解javascript中的babel到底是什么
Jun 21 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
js实现上下左右键盘控制div移动
Jan 16 Javascript
javascript之Object.assign()的痛点分析
Mar 03 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
在PHP中使用curl_init函数的说明
2010/11/02 PHP
PHP可变函数的使用详解
2013/06/14 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
python基础教程项目五之虚拟茶话会
2018/04/02 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
Python requests模块实例用法
2019/02/11 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
python实现梯度法 python最速下降法
2020/03/24 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
竞争上岗演讲稿范文
2014/05/12 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
原生JS实现飞机大战小游戏
2021/06/09 Javascript
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
关于MySQL中的 like操作符详情
2021/11/17 MySQL