随机小球

<!DOCTYPE html><html>   <head>      <meta charset="UTF-8">      <title></title>   </head>   <style type="text/css">      *{         margin: 0;         padding: 0;      }      body{         overflow: hidden;      }   </style>   <body>      <canvas id="view" width="" height=""></canvas>   </body>

<script type="text/javascript">

//1.初始化获取元素      var canvas = document.getElementById(‘view‘);

var ps = canvas.getContext(‘2d‘);

//2.获取窗口可视区域宽高      var width = document.documentElement.clientWidth;

var height = document.documentElement.clientHeight;

//3.更新canvas宽高      canvas.width = width;

canvas.height = height;

//4.定义构造函数

function ball(title){

//初始化xy坐标还有半径

this.r = 15;

this.x = this.random(width-this.r);

this.y = this.random(height-this.r);

//初始化颜色 

this.color = this.randomColor();

//初始化移动速度

this.speedX = this.random(4);

this.speedY = this.random(6);

//初始化文本

this.title = title || ‘Canvas‘;

}

//5.添加原型方法

ball.prototype = {

random:function(num){

return parseInt(Math.random()*num)+1

},

randomColor:function(){

return ‘rgb(‘+this.random(255)+‘,‘+this.random(255)+‘,‘+this.random(255)+‘)‘

},

move:function(){

this.x += this.speedX;          

this.y += this.speedY;

if(this.x < this.r ){

this.speedX = Math.abs(this.speedX)

}else if(this.x > width-this.r){

this.speedX = -this.speedX

}

if(this.y < this.r ){

this.speedY = Math.abs(this.speedY)

}else if(this.y > height-this.r){

this.speedY = -this.speedY

}

this.render();

},

render:function(){

ps.beginPath();

ps.fillStyle = this.color;

ps.arc(this.x,this.y,this.r,0,2*Math.PI);

ps.fill();

this.fillText();

},

fillText:function(){

ps.font = ‘16px 微软雅黑‘;

ps.fillText(this.title,this.x+this.r+2,this.y+this.r/2-2);

}

}

//单独给ball函数添加属性或方法

ball.children = [];

ball.running = 0;

ball.init = function(list){

//拆分成数组

list = list.split(/\s+/);

//遍历数组并创建对应的球

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

// 将实例化的球添加到children中 并且指定文本

this.children.push(new this(list[i]))// this就是ball         }

}

ball.play = function(){

//如果已运行返回          if(this.running) return;

this.running = 1;

var children = this.children;

setInterval(function(){

ps.clearRect(0,0,width,height);

//遍历子元素执行move方法

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

//执行move方法            children[i].move();

// 遍历所有子元素挨个比较计算距离 

for(var j = 0; j<children.length;j++){

//i==j时不比较 因为是同一个球

if(i!=j){

//计算两个球之间的距离 

var left = children[i].x - children[j].x;

var top1 = children[i].y - children[j].y;

//取绝对值

// left = Math.abs(left);

top1 = Math.abs(top1);

//限制距离 在100-200之间可以连线

if(left<0 && left>=-200 && top1<=200){

//从当前球画到 另一个

ps.beginPath();

ps.strokeStyle = children[i].color;

ps.moveTo(children[i].x,children[i].y);

ps.lineTo(children[j].x,children[j].y);

ps.stroke();

}

}

}

}           

},30);       

}

ball.init(‘Html  Css Javascript Jquery  Css Javascript Jquery  Css Javascript Jquery  Css Javascript Jquery PHP Mysql XML Ajax JSONP Cavnas  BigPipe Memached Redis CSS3 HTML5‘);

ball.play();

//var obj = new ball();

</script>

</html>
时间: 2024-10-16 02:50:08

随机小球的相关文章

canvas 之星空动画

最近看到位博主的博客背景图很是炫酷,查找下资料了解是canvas实现效果,今天就来看看详细解剖下吧. 实现思路 首先了解下canvas中的动画原理?canvas中的动画其实是通过不断的重绘来实现动起来的效果的.通过设计小球的位置变化,达到小球不断运动的效果.同时也可以设计小球衍射,大小的变化实现其他效果.这里就只涉及小球位置,颜色的变化吧. 1,定义小球对象. var ball = { xPointer: 100, //小球初始x坐标 yPointer: 100, //小球初始y坐标 speed

二〇一九年第三次课程设计实验报告

二〇一九年第三次课程设计实验报告 一, 实验项目名称 疯狂的跳弹暨多球反弹(第四章第二个) 二, 实验项目功能描述 本项目为多球反弹 而项目的主体功能是:用easyx加载c语言的源代码以实现更加复杂和丰富的项目表现程度.本项目使用c语言的while循环来实现无限循环,并且使用for循环来计算有限循环,共计有八个子模块存在于主函数之中.以此来实现小球的反弹,以及背景的改变,并判断小球是否要反弹.最终实现多个小球的反弹. 三, 项目模块结构介绍 [一] 项目模型: [二] 文字介绍: 主函数一模块:

180行JavaScript代码实现的小球随机移动代码

<html> <body> <div id ='desc'><b>test1:</b>test2</div> <canvas id = 'canvas'></canvas> </body> <script> window.onload = init(); function init() { canvas = document.getElementById('canvas'); conte

如何用面对对象来做一个躁动的小球?

今天来看看怎样用面对对象来做一个躁动的小球. 首先我们先创建一个对象,他的属性包含小球的随机水平.纵向坐标,随机宽.高,随机颜色,以及创建小球的方法. html: <div id="wrap"></div> js: function Boll(x,y,w,h,color){ // 随机宽高 var wh = randFn(5, 40); // 随机颜色 var c = 'rgb('+randFn(0, 255)+',' + randFn(0,255)+','+r

多线程之碰撞小球

弹球游戏是一款模拟多线程运行的游戏,利用继承Thread实现多线程. 效果图:小球之间会相互碰撞并交换速度在弹开.按钮能实现随机添加.移除小球并暂停小球移动. 具体实现: 1.创建界面(包含主函数). public class BallFrame extends JFrame {public static void main(String[] args) { BallFrame bf = new BallFrame(); bf.initUI(); } public void initUI(){

日更第4期-2015-1-19-openFrameworks系列第三讲-面向对象的小球们

昨天的教程里,实在有太多想讲的东西了,所以反而什么都没有讲.一个很大的原因就是——我妄想让所有 水平的读者都能读懂.这其实是绝对不可能的.因为,每个人知识面不同,已经掌握的技能也不同,那么所 适应的学习轨迹其实也该不同. 以我个人来说,我其实是一个谨慎型的人,在学习的过程中一般不会冒进,这意味着我的基础知识会更加 扎实,但是进步的速度就会偏慢.我在这里写博客,其实就是一种学习方式,但无疑,这种学习方式其实很 效率低下(而且还没有人看).可是,对于我就是一个很好的补充......感觉有点跑题了,其

poj2069+hud3007(点的最小球(圆)覆盖+模拟淬火算法)

Super Star Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3198   Accepted: 853   Special Judge Description During a voyage of the starship Hakodate-maru (see Problem 1406), researchers found strange synchronized movements of stars. Havi

(NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 前一篇博文介绍了物理对象中小球与砖块的碰撞处理,在这一篇中我们再来看一下小球与反弹棒碰撞发生的那点事 ;) 小球与反弹棒开始碰撞 同样我们在碰撞中也要调整小球的力矩,所以也要分开处理,首先是碰撞开始时的处理: -(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair ball:(CCNode *)

随机神经网络之模拟退火

一.引言 在机器学习以及优化组合问题中,最常用的方法就是梯度下降法.比如BP神经网络,多层感知器的神经元(units)越多,对应的权矩阵也就越大,每个权可视为一个自由度或者变量.我们知道自由度越高,变量越多,模型越复杂,模型的能力越强.但是模型能力越强,模型就越容易过拟合,对噪声太敏感.另一方面,使用梯度下降进行最优解搜寻时,多变量的误差曲面很像是连绵起伏的山峰一样,变量越多,山峰和山谷也越多,这就导致梯度下降法极容易陷入到局部的一个小山谷,而停止搜索.这就是常规的梯度下降法在解决多维度的优化问