贝塞尔曲线
bezierCurveTo(cpx,cpy,cpx2,cpx2,dx,dy);创建一条表示贝塞尔曲线的路径.
该函数接受六个参数,分别代表三个点.
(cpx,cpy),(cpx2,cpx2)代表控制点,决定曲线的形状
(dx,dy)代表终点
模拟贝塞尔曲线(isPointInPath)
isPointInPath方法
isPointInPath
是 Canvas 2D API 用于检测某点是否在路径的描边线上的方法。返回值是一个布尔值,当这个点在路径的描边线上,则返回true,否则返回false。
首先强调isPointInPath(x,y)方法是针对路径的,比如canvas中的rect、arc方法都可以用,但是fillRect不可以用,因为它不是路径;而且仅对当前的路径有效,而且如果当前路径有多个子路径(currentPath可以有多个subPath:比如进行了rect()之后,再进行arc(),最后关闭路径,进行stroke,那么rect()和arc()所绘制的就是当前路径的两个子路径),只对第一个子路径有效
所以要在每次判断之前要创建要移动的元素
1 | <script type="text/javascript"> |
原生方法
利用点击该点的位置到圆心的距离与半径相比,如果大于半径,则表明点击的位置不在小球内部,反之,则在小球内部
1 | <script type="text/javascript"> |