JavaScript结合Canvas绘画画运动小球_第1页
JavaScript结合Canvas绘画画运动小球_第2页
JavaScript结合Canvas绘画画运动小球_第3页
JavaScript结合Canvas绘画画运动小球_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第JavaScript结合Canvas绘画画运动小球目录1.实现思路2.静态效果3.总结前言:

canvas是HTML5新增的元素,也被称为画布,可以结合javascript实现绘制各种图形,制作各种炫酷的动画效果,现在我们也来使用canvas画随机运动小球。

1.实现思路

首先为了达到我们想要的效果,可以先创建一个构造函数。给构造函数添加对应的属性和方法。实例化出多个对象,并且保存在数组中。遍历每个对象,实现画圆。间隔修改每个球的x,y值。

先准备画布确定对应的宽高:

canvasid="canvas"width="400"height="400"/canvas

script

letcanvas=document.getElementById('canvas');

letctx=canvas.getContext('2d');

letmaxWidth=canvas.width,

maxHeight=canvas.height;

ctx.fillStyle='#000';

ctx.fillRect(0,0,maxWidth,maxHeight);

/script

因为是随机运动,所以要创建一个获取随机数的方法:

functiongetRandomNum(minNum,maxNum){

switch(arguments.length){

case1:

returnMath.round(Math.random()*minNum+minNum);

break;

case2:

returnMath.round(

Math.random()*(maxNum-minNum)+minNum);

break;

case0:

return0;

break;

//创建一个Ball的构造函数

functionBall(maxWidth,maxHeight,ctx){

this.ctx=ctx;

this.maxWidth=maxWidth;

this.maxHeight=maxHeight;

//随机半径

this.r=getRandomNum(5,15);

//随机x,y坐标

this.x=getRandomNum(this.r,this.maxWidth-this.r);

this.y=getRandomNum(this.r,this.maxHeight-this.r);

//平移速度,正负区间是为了移动方向多样

this.speedX=getRandomNum(-2,2);

this.speedY=getRandomNum(-2,2);

//颜色随机

this.color=`rgba(${getRandomNum(0,255)},

${getRandomNum(0,255)},

${getRandomNum(0,255)},${Math.random()})`;

Btotype={

draw:function(){

ctx.beginPath();

ctx.fillStyle=this.color;

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

ctx.fill();

ctx.closePath();

move:function(){

//判断边界值,让圆球始终保证在画面内

if(this.xthis.maxWidth-this.r||this.xthis.r){

this.speedX=-this.speedX;

if(this.ythis.maxHeight-this.r||this.ythis.r){

this.speedY=-this.speedY;

this.x+=this.speedX;

this.y+=this.speedY;

//创建100个Ball实例

letballs=[];

for(leti=0;i100;i++){

letnewBall=newBall(maxWidth,maxHeight,ctx);

newBall.draw();

balls.push(newBall);

}

2.静态效果

现在我们画出了不同半径和颜色的静止圆球:

调用move方法,间隔修改每个球的x,y值。

setInterval(()={

//每次画之前都要清除画布

ctx.clearRect(0,0,maxWidth,maxHeight);

ctx.fillStyle='#000';

ctx.fillRect(0,0,maxWidth,maxHeight);

for(letj=0;j100;j++){

balls[j].draw(ctx);

balls[j].move();

},100);

效果展示:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论