html5简单制作效果,分享一个利用HTML5制作的海浪效果代码-H5教程
在前面简单讲述了一下HTML里的Canvas,这次根据Canvas完成了“海浪效果”(水波上升)。
(O(∩_∩)O哈哈哈~作者我能看这个动画看一下午)
上升水波.gif动画分析
构成:贝塞尔曲线
画布:Canvas
效果:波浪涨潮(上升、波动)
触发条件:点击按钮
贝塞尔曲线.gif
算法实现分析:从sin()函数切入,sin()越大波度起伏越大,简单说就是通过不断改变sin()值来实现海浪效果动画
干货开始:
1、创建触发条件(按钮)
οnclick="Beisizer()"//点击时触发JS事件
οnmοuseοver="bcd()"//鼠标经过时JS事件
οnmοuseleave="out()"//鼠标离开时JS事件
id="Anniu">确                     定
2、创建画布Canvas
3、创建JS事件(属性设置)//获取画布
var beisizer = document.getElementById("Theback");
var ContenofBeisizer = beisizer.getContext("2d");
//设置波浪海域(海浪宽度,高度)
var beisizerwidth = beisizer.width;
var beisizerheight = beisizer.height;
var beisizerlinewidth = 2;
//曲线
var sinX = 0;
var sinY = beisizerheight/2.0;
//轴长
var axisLenght = beisizerwidth;
//弧度宽度
var waveWidth = 0.014;
//海浪高度
var waveHeight = beisizerheight / 15.0;
ContenofBeisizer.lineWidth = beisizerlinewidth;
4、画贝塞尔曲线var drawSin = function (xofspeed) {
ContenofBeisizer.save();
//存放贝塞尔曲线的各个点
var points = [];
ContenofBeisizer.beginPath();
//创建贝塞尔点
for (var x = sinX;x < sinX +axisLenght;x+=80/axisLenght){
// var y = -Math.sin((sinX+x)*waveWidth); 测试请解开注释,注释下一行
var y = -Math.sin((sinX+x)*waveWidth+xofspeed);
// points.push([x,sinY + y * waveHeight]); 测试请解开注释,注释下一行
points.push([x,rand+y*waveHeight]);
// ContenofBeisizer.lineTo(x,sinY + y * waveHeight); 测试请解开注释,注释下一行
ContenofBeisizer.lineTo(x,rand + y * waveHeight);
}
ContenofBeisizer.lineTo(axisLenght,beisizerheight);
ContenofBeisizer.lineTo(sinX,beisizerheight);
ContenofBeisizer.lineTo(points[0][0],points[0][1]);
ContenofBeisizer.stroke();
ContenofBeisizer.restore();
//贝塞尔曲线样式设置
ContenofBeisizer.strokeStyle = "#3bc777";
ContenofBeisizer.fillStyle = "#3bc777";
ContenofBeisizer.fill();
};
这一段代码已经完成静态贝赛尔曲线的绘制了,可以通过解开以下语句尝试运行看下效果。
var y = -Math.sin((sinX+x)*waveWidth);
points.push([x,rand+y*waveHeight]);
var y = -Math.sin((sinX+x)*waveWidth+xofspeed);
运行方法执行 drawSin()
静态贝塞尔曲线.png
5、海浪效果的实现
需要在属性中加入一下代码进行速率的设置
var speed = 0.1; 数值越大速率越快
var xofspeed = 0; 波浪横向的偏移量
var rand = beisizerheight;波浪高度var rendY = function () {
ContenofBeisizer.clearRect(0,0,beisizerwidth,beisizerheight);
//控制海浪高度
var tmp = 0.1;
rand-=tmp;
var b = beisizerheight - rand;
//控制循环涨潮
if (parseInt(b)==beisizerheight){
rand = beisizerheight;
}
drawSin(xofspeed);
drawSinl(xofspeed);
xofspeed += speed;
requestAnimationFrame(rendY);
};
通过调用自身产生不同的高度,来产生海浪效果。这里设置的属性值配合第四步画贝塞尔曲线一起进行理解。
运行方式 rendY();
总结
贝赛尔曲线也可以制作音波,心跳仪等。可以尝试改变频率值来实现。
【相关推荐】
1. 免费h5在线视频教程
2. HTML5 完整版手册
3. erdangjiade.com原创html5视频教程
html5简单制作效果,分享一个利用HTML5制作的海浪效果代码-H5教程相关推荐
- html5实现贪吃蛇,分享一个用html5实现的贪吃蛇特效代码
本篇小编为大家分享一个用html5实现的简单贪吃蛇特效代码,喜欢的小伙伴们可以看一下 Snake //内置大量BUG,I'm sorry. var lev=100; //定时器间隔时间 var num ...
- html5 海浪,分享一个利用HTML5制作的海浪效果代码
在前面简单讲述了一下HTML里的Canvas,这次根据Canvas完成了"海浪效果"(水波上升). (O(∩_∩)O哈哈哈~作者我能看这个动画看一下午) 上升水波.gif动画分析 ...
- html贪吃蛇自动走,分享一个用html5实现的贪吃蛇特效代码
本篇小编为大家分享一个用html5实现的简单贪吃蛇特效代码,喜欢的小伙伴们可以看一下 Snake //内置大量BUG,I'm sorry. var lev=100; //定时器间隔时间 var num ...
- python制作阴阳师脚本_利用python制作一个阴阳师小游戏
利用python制作一个阴阳师小游戏 发布时间:2020-11-27 13:59:49 来源:亿速云 阅读:84 这期内容当中小编将会给大家带来有关利用python制作一个阴阳师小游戏,文章内容丰富且 ...
- 分享一个python采集中国福利彩票的小代码
分享一个python采集中国福利彩票的小代码 分享一个python采集中国福利彩票的小代码 能采集双色球,七乐彩,3D彩票任意一段时间的开奖号码,根据需求取消请求头注释,就能采集数据.(初学者请勿评价 ...
- html5实现粒子效果的文字,利用HTML5实现Canvas粒子文字特效
特效描述:利用HTML5实现 Canvas 粒子文字特效.利用HTML5实现Canvas粒子文字特效 代码结构 1. HTML代码 change /*jshint esversion:6*/ var ...
- 苹果手机html5摇一摇游戏戏码,利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖,html5devicemotion...
利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖,html5devicemotion 摇一摇JS脚本逻辑: 接下来是移动端JS脚本逻辑的实现,摇一摇的实现需借助html5新增的 ...
- html5如何写出圆背景,利用HTML5实现Canvas虚幻圆点背景特效
特效描述:利用HTML5实现 Canvas 虚幻圆点 背景特效.利用HTML5实现Canvas虚幻圆点背景特效 代码结构 1. 引入JS 2. HTML代码 (function($){ var can ...
- html5 可旋转的三维树形结构,利用HTML5实现勾股树植物生长动画特效
特效描述:利用HTML5实现 勾股树 植物生长 动画特效.利用HTML5实现勾股树植物生长动画特效 代码结构 1. HTML代码 const canvas = document.querySelect ...
最新文章
- 30秒或更短的时间内弄懂的有用CSS代码片段
- 通过yum安装配置lamp
- 有关于诚信:唐骏学历门
- RDS使用只读副本和多AZ的区别在于数据复制的机制
- SasSHRM中基于shiro的认证授权:系统微服务配置shiro
- Django QuerySet API文档
- SQLServer引擎优化顾问
- 程序员,你的粮草何在?
- NumSharp  - Numerical .NET
- Microsoft Excel设置单元格下拉框的方法
- 湖北随州:借大数据“慧眼”织密扶贫监督网
- 红巨星粒子插件Trapcode Suite 14.0 Win版全套中文完美汉化版
- 程序员学算法必备网站之一:VisuAlgo
- java freemarker导出word时添加或勾选复选框
- 联想thinkpad E430c 重装系统之后无线连接显示红叉解决办法
- 关于光模块用单模光纤和多模光纤小知识
- 拒绝安利:安利的真相 丁黎
- 程序猿健身之腹肌~基本版本
- “站在巨人的肩膀上”
- C sharp(#)中的float,double, Single,Double关键字