美文网首页
Canvas弹球碰撞

Canvas弹球碰撞

作者: 院长他人格又分裂了 | 来源:发表于2016-05-28 19:25 被阅读182次
roll.gif

(以下为个人理解,可能有理解不当或不足之处,望大家批评指正。)


Canvas(HTML5新增标签)

Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图。

这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。


接下来做一个用canvas实现的弹球效果(效果见上图)

首先在html中新建一个canvas画布,id名myCanvas。

width 属性 :  画布的宽度。这个属性可以指定为一个整数像素值或者是窗口宽度的百分比。当这个值改变的时候,在该画布上已经完成的任何绘图都会擦除掉。默认值是 300。
height 属性 :  画布的高度。这个属性可以指定为一个整数像素值或者是窗口高度的百分比。当这个值改变的时候,在该画布上已经完成的任何绘图都会擦除掉。默认值是 300。
屏幕快照 2016-05-28 下午2.44.03.png

在JavaScript中,根据id名获取canvas。
大多数 Canvas 绘图 API 都没有定义在 <canvas> 元素本身上,而是定义在通过画布的 getContext() 方法获得的一个“绘图环境”对象上。

建立一个随机函数,参数最小值min, 最大值max。


屏幕快照 2016-05-28 下午2.47.22.png

因为弹球的大小、颜色、初始位置、移动速度不同,所以依据上面建立的随机函数,设置弹球的属性。

随机位置
弹球以圆心为中点移动,圆心x坐标移动范围最大为画布宽减半径
判断x坐标是否小于半径,如果小于半径,圆超出画布,则半径值赋给x坐标;如果大于半径,保持初始x坐标(y坐标亦同)。

随机方向
随机设置,判断在0 - 3范围内随机生成的数值是否大于范围内的半数2,如果是,弹球初始方向为正;如果不是,反向移动。


屏幕快照 2016-05-28 下午4.25.32.png

在JavaScript中,prototype对象是实现面向对象的一个重要机制。
每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。

给构造函数Round添加原型方法 draw、move
draw 绘制圆
move 弹球移动
判断,碰壁回弹。


屏幕快照 2016-05-28 下午5.42.18.png

新建一个数组
新建函数,for循环,设置圆的数量,遍历所有的圆, 调用Round构造函数和draw 、move方法函数。
调用函数。
加到数组中。

新建执行函数,先清空画布。
遍历所有的圆形对象, 让对象自己重绘, 移动
requestAnimationFrame 按帧数执行,执行过程中不断刷新,速率快肉眼不好分辨。所以开始前清空画布,以防重叠。


屏幕快照 2016-05-28 下午5.56.50.png

相关文章

  • Canvas弹球碰撞

    (以下为个人理解,可能有理解不当或不足之处,望大家批评指正。) Canvas(HTML5新增标签) Canvas ...

  • 欢乐球球

    疯狂弹球3——再度升级!到传统弹球游戏画面,让游戏多姿多彩。先进的物理引擎,完美模拟真实碰撞。简单的操作,谁都可以...

  • 构造函数&&类--canvas小球碰撞

    1. 构造函数 canvas小球碰撞 2. 类 canvas小球碰撞 有上可以看出,用类写面向对象的方法,...

  • canvas 碰撞反弹

    之前我们学习js的时候都写过碰撞反弹,canvas里的碰撞反弹也可以用同样的条件判断,现在我们回顾一下之前的判断 ...

  • Canvas 碰撞检测

    canvas 的尺寸分为两种,一个是 canvas 作为 html 元素本身的尺寸,另外一个 canvas 作为绘...

  • canvas版像素碰撞

    canvas像素碰撞思路: 创建两个图片 将第一张图片拷贝到canvas中,带该图片加载完毕之后 拖动第二张图片,...

  • Python游戏练习之弹球示例

    这篇文章主要介绍了python实现的弹球小游戏,由键盘控制底部挡板移动,碰撞小球的游戏功能。 需求描述: ball...

  • 彩色弹球-好玩物理弹球技术支持

    彩色弹球-好玩物理弹球 彩色动物 彩色弹球 越弹越过瘾 全面适配IPhoneX 好玩的弹球游戏,快来体验吧~ ...

  • [智力题]选红球

    你有两个罐子,50个红色弹球,50个蓝色弹球,随机选出一个罐子,随机选取出一个弹球放入罐子,怎么给红色弹球最大的选...

  • 疯狂弹球

    最好玩的弹球游戏——疯狂弹球震撼来袭!最简单!最休闲!最疯狂!最与众不同的弹球游戏! 上手操作简单,玩法新颖有趣,...

网友评论

      本文标题:Canvas弹球碰撞

      本文链接:https://www.haomeiwen.com/subject/mdifdttx.html