使用js画小球沿直线运动

JavaScript015

使用js画小球沿直线运动,第1张

js:  https://github.com/wangxia34/trajectory/blob/master/trajectory/html_js/drawBeeline/demo1.js

html:  https://github.com/wangxia34/trajectory/blob/master/trajectory/html_js/drawBeeline/demo1.html

准备属性值:

   本文使用js画直线,运用到css中的一些属性。

绘制的步骤:

    在本例中,绘制直接使用鼠标。点击获得起始点,拖动到终点获得结束点,鼠标松开就绘制图形。

获得起始点:

获得结束点:

绘制直线:

    使用了jquery中的animate()方法。

   js:  https://github.com/wangxia34/trajectory/blob/master/trajectory/html_js/drawBall/demo2.js

   html:  https://github.com/wangxia34/trajectory/blob/master/trajectory/html_js/drawBall/demo2.html

小球的属性:

创建小球:

使小球运动:

    将之前的画直线的方法封装成一个固定起点和终点的类。

js:  https://github.com/wangxia34/trajectory/blob/master/trajectory/html_js/drawTrajectory/js/createLine.js

html:  https://github.com/wangxia34/trajectory/blob/master/trajectory/html_js/drawTrajectory/demo1.html

html绘制小球并跟随鼠标移动,Canvas跟随鼠标炫彩小球的实现

黄利好

转载

关注

0点赞·318人阅读

跟随鼠标炫彩小球

canvas没有让我失望,真的很有意思

实现效果

超级炫酷

实现原理

创建小球

给小球添加随机颜色,随机半径

鼠标移动通过实例化,新增小球

通过调用给原型新增的方法,来实现小球的动画效果

通过定时器不断地更新画布

实现过程

创建小球

通过创建函数收纳小球所有的样式,再通过实例化函数,将鼠标当前的位置传递给Ball函数,让通过实例化创建出来的小球,最后将创建出来的小球存入数组中,数组中以对象形式存放着每个小球的属性和属性值

function Ball(x, y, r) {

this.x = x

this.y = y

this.r = r

this.color = getRandom()//随机生成颜色

this.dx = parseInt(Math.random() * 10) - 5//生成随机移动的位置

this.dy = parseInt(Math.random() * 10) - 5//`-5`是让小球能向四周随机移动

ballArr.push(this)//添加小球

}

//监听鼠标移动事件

canvas.addEventListener('mousemove', function (e) {

new Ball(e.offsetX, e.offsetY, parseInt(Math.random() * 20))

/*实例化Ball为Ball对象通过__proto__来调用原型的方法*/

})

生成随机颜色

对于color这个属性,可以通过6位16进制的值来表示一种颜色

因此,可以通过随机产生一个6位的16进制数来做为随机颜色

将0到f这16个数存入数组中,通过随机生成6个0到16的索引值,这样就能通过数组的索引号随机的获取6个到0到f中的数了

split的作用是:以括号内的参数为标志符来分割字符串,返回数组

//设置随机颜色

function getRandom() {

var allType = '0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f'//16进制颜色

var allTypeArr = allType.split(',')//通过','分割为数组

var color = '#'

for (var i = 0i <6i++) {

//随机生成一个0-16的数

var random = parseInt(Math.random() * allTypeArr.length)

color += allTypeArr[random]

}

return color//返回随机生成的颜色

}

渲染小球

给函数的原型链中添加render方法,让每一个通过Ball函数实例化出来的对象,带有这些方法

这个函数的作用是,通过Ball的参数生成一个圆形,在实例化的时候,会生成一个对象,这个对象里就存放的x,y,r这些值

Ball.prototype.render = function () {

ctx.beginPath()//路径开始

ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false)//画圆,位置,半径

ctx.fillStyle = this.color//颜色

ctx.fill()//填充

}

更新小球信息

因为生成的小球x,y,r是固定的,所以小球的位置也是固定的,不会改变

因此需要通过改变每个小球的位置和半径让小球动起来,当小球的半径小于0时,调用remove方法将小球从数组中删除

/* 更新小球位置和半径 小于0时清除 */

Ball.prototype.update = function () {

this.x += this.dx//x改变

this.y += this.dy//y改变

this.r -= 0.1//半径减小

if (this.r <0) {

this.remove()//调用添加的remove方法

}

}

删除小球

这是上面调用的remove方法,当this也就是当前小球半径小于0时i,遍历整个数组,找到这个this,也就是”这个小球“,通过调用数组中的方法,删除掉数组的这个元素

splice(index,num) 方法可删除从 index 处开始删除num个元素

Ball.prototype.remove = function () {

for (var i = 0i <ballArr.lengthi++) {

if (ballArr[i] == this) {

ballArr.splice(i, 1)//找到这个小于0 的元素,删除

在游戏中长按Home键可以直接弹出系统调节菜单,支持调节亮度,声音,和自动调节亮度。

2、在玩游戏过程中,长按主页键,NS可调出主页菜单,按手柄的ZL+ZR键,可查看电量百分比。当然还可以通过设置,让电量一直显示在屏幕上,具体步骤:设置-主机-主机剩余电量。

3、 NS手柄搜索功能:用NS主机来查找手柄,在主界面选择“手柄”图标,选择“搜索手柄“进入查找界面,手柄的图标亮了的话,说明手柄就在附近,长按图标,手柄会持续震动,并发出声响,这样找手柄会方便得更多。

4、更换NS背景色,如果想在晚上关了灯玩switch,又怕光线打扰身边人,可以把NS的主题从白色切换成黑色,具体步骤:主界面-设置-主题-黑色系。

5、两个非常规的NS画面,反色模式和灰度模式值得尝试。灰度模式下,画面变成了黑白灰三种颜色,看起来像墨水屏阅读器一样,只不过这不护眼。反相模式下,画风变得诡异了起来(敢不敢用反相模式完路易吉洋楼3?)设置路径:设置-主机-调整画面色调-反转颜色/灰度。switch 隐藏功能 任天堂游戏机 塞尔达传说 动物森友会