js面向对象练习(二):JS面向对象的思路(canvas)写躁动的小球

简介:

原文链接:http://www.jianshu.com/p/c921d70812a5

著作权归原作者所有:ToyLevom 简书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html>
< html >
< head >
< meta  charset= "utf-8">
< title ></ title >
<!--<script src="jquery-1.9.1.min.js"></script>-->
 
 
< style >
   * {
                 margin: 0;
                 padding: 0;
             }
             html,body {
                 width: 100%;
                 height: 100%;
                 /*解决canvas的内联块的上下出现边隙(浮动也可以解决)*/
                 /*font-size: 0;*/
             }
             canvas {
                 /*解决canvas的内联块的上下出现边隙(浮动也可以解决)*/
                 display: block;
             }
 
</ style >
</ head >
< body >
     < canvas  width = "500"  height = "500"  id = "cavas" ></ canvas >
     < script  src = "scripts/test.js" ></ script >
</ body >
</ html >
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var  cavas = document.getElementById( "cavas" );
var  body = document.getElementsByTagName( "body" )[0];
var  cxt = cavas.getContext( "2d" );
 
cavas.width = body.offsetWidth;
cavas.height = body.offsetHeight;
var  cwidth = cavas.width;
var  cheight = cavas.height;
//创建随机函数
function  random(max,min,notNum){
     var  result = parseInt(Math.random()*(max - min)+ min);
     if (result == notNum){   //指定不想要出现的随机数
         result++;
     }
     return  result;
}
 
//随机颜色函数
function  randomColor() {
     return  "rgba(" + random(0, 255) + "," + random(0, 255) + "," + random(0, 255) + "," + (Math.random() + 0.1).toFixed(2) + ")" ;
}
 
//创建构造函数
function  Ball(x,y,r,speedX,speedY,color){
     this .r = r||random(10,30)
     this .x = x||random( this .r, cwidth -  this .r);
     this .y = y||random( this .r, cheight -  this .r);
     this .color = color || randomColor();
     this .speedX = speedX || random(-5, 5, 0);
     this .speedY = speedY || random(-5, 5, 0);
     //创建小球画布
     this .draw =  function (){
         cxt.fillStyle =  this .color;
         cxt.beginPath();
         cxt.arc( this .x, this .y, this .r,0,Math.PI*2, true );
         cxt.closePath();
         cxt.fill();
     }
     //创建小球移动
     this .move =  function (){
         this .x +=  this .speedX; //速度是固定的
         this .y +=  this .speedY;
         //如果小球在最边上,则反弹回来
         if ( this .x > cwidth -  this .r ||  this .x <  this .r){
             this .speedX = - this .speedX;
         }
         if ( this .y > cheight -  this .r ||  this .y <  this .r){
             this .speedY = -  this .speedY;
         }
         this .draw();
     }
}
//创建100个小球对象
var  arrBall = [];
for ( var  i=0; i < 100; i++){
     var  ball =  new  Ball();
     arrBall.push(ball) //将生成的对象放进数组
}
//小球移动
setInterval( function (){
     cxt.clearRect(0, 0, cwidth , cheight);
     for ( var  i = 0,len = arrBall.length;  i < len; i++){
         arrBall[i].move();
     }
},16)


本文转自  小旭依然  51CTO博客,原文链接:http://blog.51cto.com/xuyran/1886859
相关文章
|
3月前
|
移动开发 前端开发 JavaScript
纯JavaScript实现HTML5 Canvas六种特效滤镜
纯JavaScript实现HTML5 Canvas六种特效滤镜
94 6
|
2月前
|
移动开发 前端开发 JavaScript
使用JavaScript和Canvas进行绘图
Canvas是HTML5的绘图工具,借助JavaScript实现网页上的图形、图像及动画创作。通过Canvas元素和2D渲染上下文,开发者能绘制图形、处理图像、制作动画,甚至用于游戏开发。基本步骤包括获取Canvas元素、设置绘图属性、绘制形状、处理图像以及实现动画。同时,注意性能优化,如减少不必要的重绘和使用Web Workers。Canvas结合WebGL还能实现3D效果,与Web Audio API结合则能做音频可视化。分享你的Canvas经验,探讨更多创意应用!
23 0
|
3月前
|
Web App开发 移动开发 前端开发
技术经验分享:canvas+howler.js解决同页面视频、音频同时播放问题
技术经验分享:canvas+howler.js解决同页面视频、音频同时播放问题
91 0
|
3月前
|
设计模式 JavaScript 前端开发
【JavaScript】深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略
JavaScript的继承机制基于原型链,它定义了对象属性和方法的查找规则。每个对象都有一个原型,通过原型链,对象能访问到构造函数原型上的方法。例如`Animal.prototype`上的`speak`方法可被`Animal`实例访问。原型链的尽头是`Object.prototype`,其`[[Prototype]]`为`null`。继承方式包括原型链继承(通过`Object.create`)、构造函数继承(使用`call`或`apply`)和组合继承(结合两者)。ES6的`class`语法是语法糖,但底层仍基于原型。继承选择应根据需求,理解原型链原理对JavaScript面向对象编程至关重要
68 7
【JavaScript】深入浅出JavaScript继承机制:解密原型、原型链与面向对象实战攻略
|
3月前
|
JavaScript 前端开发
记录Javascript数组类练习
记录Javascript数组类练习
19 1
|
3月前
|
JavaScript 前端开发
JS循环语句以及一些小练习
JS循环语句以及一些小练习
20 1
|
3月前
|
前端开发 JavaScript 搜索推荐
[初学者必看]JavaScript 15题简单小例子练习,锻炼代码逻辑思维
【6月更文挑战第3天】这是一个JavaScript编程练习集,包含15个题目及答案:计算两数之和、判断偶数、找数组最大值、字符串反转、回文检测、斐波那契数列、数组去重、冒泡排序、阶乘计算、数组元素检查、数组求和、字符计数、数组最值和质数判断以及数组扁平化。每个题目都有相应的代码实现示例。
122 1
|
3月前
|
存储 前端开发 JavaScript
[初学者必看]JavaScript 简单实际案例练习,锻炼代码逻辑思维
【6月更文挑战第2天】这是一个前端小项目合集,包括图片轮播器、动态列表、模态框、表单验证等14个项目,旨在帮助初学者提升编码技能和实战经验。每个项目提供关键提示,如使用HTML、CSS和JavaScript实现不同功能,如事件监听、动画效果和数据处理。通过这些项目,学习者可以锻炼前端基础并增强实际操作能力。
54 2
|
3月前
|
前端开发 JavaScript 容器
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
48 0
|
3月前
|
JavaScript 前端开发
记录JavaScript练习
记录JavaScript练习
15 0
下一篇
DDNS