<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>canvasTest</title>
</head> <body>
<input type="button" id="clbtn" value="清除画布" style="border:1px solid #444;display:block;margin: 10px auto;" />
<canvas id="canvas" style="border:1px solid #444;display:block;margin: 10px auto;"></canvas>
</body>
<script>
window.onload=function(){
var clbtn=document.getElementById("clbtn");
var canvas=document.getElementById("canvas");
var cxt=canvas.getContext("2d");
canvas.width=1000;
canvas.height=500;
function ball(x,y,vx,colorindex){
this.x=x;
this.y=y;
this.r=22;
this.g=2;
this.vx=vx;
this.vy=-20;
this.colorindex=colorindex;
this.color=['red','blue','green','orange','yellow','pink'];
};
var balls=[]; // context.arc(centerx,centery,radius,startingAngle,endingAngle,anticlockwise=flase)
// 圆心坐标 ,半径值 ,开始角度 ,结束角度, 顺逆时针(默认flase顺时针)
canvas.onmousedown=function(){
canvas.onmousemove=function(e){
var e= event || ev;
var x = e.clientX-canvas.offsetLeft;
var y = e.clientY-canvas.offsetTop+document.body.scrollTop; balls.push(new ball(x,y,Math.floor(Math.random()*30-5),Math.floor(Math.random()*6+1))); }
};
canvas.onmouseup=function(){
canvas.onmousemove=null;
}; setInterval(function(){
cxt.clearRect(0,0,cxt.canvas.width,cxt.canvas.height);//清除画布20帧
for(var i = 0 ;i<balls.length;i++)
{
balls[i].x += balls[i].vx;
balls[i].y += balls[i].vy;
balls[i].vy += balls[i].g;
cxt.beginPath();
cxt.arc(balls[i].x,balls[i].y,balls[i].r,0,2*Math.PI);
cxt.closePath();
cxt.fillStyle=balls[i].color[balls[i].colorindex];
cxt.fill();
cxt.strokeStyle='white';
cxt.stroke();
document.title = balls.length; if( balls[i].y>=500 - balls[i].r)
{
balls[i].y = 500 - balls[i].r;
balls[i].vy = - balls[i].vy*0.7;
}
if( balls[i].x>=1000 - balls[i].r )
{
balls[i].x = 1000 - balls[i].r ;
balls[i].vx = - balls[i].vx*0.7;
}
if(balls[i].x<=0+ balls[i].r)
{
balls[i].x = 0 + balls[i].r ;
balls[i].vx = - balls[i].vx*0.7;
}
}; },50); clbtn.onclick=function(){
cxt.clearRect(0,0,cxt.canvas.width,cxt.canvas.height);
balls.splice(0,balls.length);//清空数组
};
} </script>
</html>

canvas绘制弹跳小球的更多相关文章

  1. canvas基础绘制-一个小球的坠落、反弹

    效果如图: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  2. (canvas)两小球碰撞后的速度问题研究

    这两天在研究canvas碰撞 先把小球开始运动的图拿出来 参考了一下别的的代码,在两个小球碰撞处理上,我觉得不完善 怎么样处理才算完善呢,当然是要用高中物理学的动量守恒了和机械能守恒了 机械能守恒我其 ...

  3. HTML5学习总结——canvas绘制象棋(canvas绘图)

    一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...

  4. 用canvas绘制折线图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 封装 用canvas绘制直线的函数--面向对象

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 学习笔记:HTML5 Canvas绘制简单图形

    HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...

  7. canvas绘制经典折线图(一)

    最终效果图如下: 实现步骤如下:注-引用了jQuery HTML代码 <!doctype html> <html lang="en"> <head&g ...

  8. Canvas绘制图形

    1.Canvas绘制一个蓝色的矩形 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  9. [canvas]利用canvas绘制自适应的折线图

    前段时间学习了用canvas绘制折现图,且当画布变换大小,折现图会随之变化,现附上代码 <!DOCTYPE html> <html lang="en"> & ...

随机推荐

  1. VC++2008 用空工程创建 DLL

    VC++2008 用空工程创建 DLL 一.创建 DLL 工程项目: 1)点击菜单[File] -> [New] -> [Project...] 弹出 “New Project” 对话框: ...

  2. [置顶] ios App 中嵌入应用商店

    昨晚同事拿了一个app 发现其app 内部页面打开了appstore 并没有唤起手机自带的appstore, 刚开始以为是用webview 加载的 ,可是自己些了一个demo 发现并不是那样一回事 用 ...

  3. MySQL学习笔记(3)

    约束 作用:保证数据的完整性,唯一性 根据字段:分为表级约束(针对2个或者2个以上字段使用),列级约束(针对1个字段使用) 约束类型:NOT NULL 非空约束 PRIMARY KEY  主键约束 U ...

  4. Html分组标签

    <fieldset>    <legend>权限种类</legend></fieldset>

  5. AJAX背景技术介绍

    AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. 主要包含了以下几种技术: Ajax(A ...

  6. sql server varchar(10)和 nvarchar(10)存储数据长度

    ) 存储10个字母,英文标点符号等,5个汉字以及中文标点等. )存储10汉字.字母等,不区分中英文.

  7. 【转】iOS隐藏导航条1px的底部横线

    默认情况下会有这条线 第一种方法: 1 2 3 4 5 6 UINavigationBar *navigationBar = self.navigationController.navigationB ...

  8. Git - 常用技能

    参考: http://wuchong.me/blog/2015/03/30/git-useful-skills/

  9. BZOJ 3514: Codechef MARCH14 GERALD07加强版( LCT + 主席树 )

    从左到右加边, 假如+的边e形成环, 那么记下这个环上最早加入的边_e, 当且仅当询问区间的左端点> _e加入的时间, e对答案有贡献(脑补一下). 然后一开始是N个连通块, 假如有x条边有贡献 ...

  10. 纯JS URL编解码

    function urlEncode(str) { var ret = ""; var strSpecial = "!\"#$%&’()*+,/:;&l ...