为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
canvas飘雪(下),H5+JS+CSS3 实现圣诞情缘教程-慕课网
章节
课签
笔记
占位
占位

canvas飘雪(下)

右边的代码snowflake.js是完成的雪花代码,初学者可能会有点难度,尝试着慢慢理解下。在canvas飘雪(中)的基础上增加了运动的一个算法,然后把整个结构给规整了下。

入口是Snowflake函数,流程如下:

  1. 获取canvas节点,并设置容器尺寸
  2. initSnow方法创建雪球对象,保存在snowArrObjs容器中
  3. 创建render与update方法,主要是用来创建雪花并更新雪花的坐标
  4. 引入requestAnimationFrame方法,刷新雪花

雪球的变化会有一系列的参数设置,这里会用initSnow函数完成这个默认的参数选择,并增加了速率等参数设置。

雪球的坐标变化update方法:

Y轴:

this.y += this.speedY;
if (this.y > this.snowSettings.maxY) {
    this.y -= this.snowSettings.maxY;
}

this.speedY是一个增量,每次都叠加赋予,如果溢出后就会还原

X轴:

this.angle += this.speedX;
if (this.angle > Math.PI * 2) {
    this.angle -= Math.PI * 2;
}
this.x = this.initialX + this.moveX * Math.sin(this.angle);

X轴的变化是有个左右移动的,所以这里回用正玄值来计算左右的位移

移动:

在renderAndUpdate方法中,通过不断的调用requestAnimationFrame达到不断刷新雪球的坐标,感觉上雪球是不断在飘落

var renderAndUpdate = function() {
    render();
    update();
    requestAnimationFrame(renderAndUpdate);
}

任务

在snowflake.js文件141行处填入任务代码

计算出雪飘在x轴坐标中移动的距离

?不会了怎么办

this.x = this.initialX + this.moveX * Math.sin(this.angle);

||

写笔记

公开笔记
提交
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

举报

0/150
提交
取消